[Advcomparch] Συμβουλή για εκτέλεση πειραμάτων

Nikos Anastopoulos anastop at cslab.ece.ntua.gr
Thu Apr 16 04:10:18 EEST 2009


Καλησπέρα,

Μια καλή πρακτική για να αυτοματοποιήσετε τη διαδικασία των πειραμάτων, 
χωρίς να χρειάζεται να περιμένετε να τελειώνει μια προσομοίωση, να 
αλλάζετε παραμέτρους, να εκτελείτε την επόμενη, κ.ο.κ., είναι να καλείτε 
τον simics μέσα από ένα bash script, απ' όπου θα αλλάζετε τις ζητούμενες 
παραμέτρους. Συγκεκριμένα, μπορείτε να χρησιμοποιήσετε το option του 
simics "-e <simics command>" για να περνάτε από το command line εντολές 
στον simics. Αυτό σας επιτρέπει να κάνετε αρχικοποιήσεις ως εξής:

Στο simics script δεν αρχικοποιείτε τις παραμέτρους που σας ενδιαφέρουν 
με σταθερές τιμές, αλλά με μεταβλητές του simics. Π.χ., στο 
cache-hierarchy.simics, μπορείτε να αλλάξετε τις γραμμές:

@l2c.config_line_number = 4096
@l2c.config_assoc = 8

σε

@l2c.config_line_number = simenv.L2_LINES
@l2c.config_assoc = simenv.L2_ASSOC

Με αυτές τις αναθέσεις υποννοείται ότι υπάρχουν δύο simics μεταβλητές, 
οι $L2_LINES και $L2_ASSOC, οι οποίες χρησιμοποιούνται για να 
αρχικοποιήσουν τα αντίστοιχα πεδία του αντικειμένου l2c (η πρόσβαση σε 
μεταβλητές του simics μέσα από εντολές της Python γίνεται 
χρησιμοποιώντας το simenv name space).

To μόνο που μένει τώρα είναι η αρχικοποίηση των simics μεταβλητών.
Αυτό γίνεται από το command line ως εξής:

./simics -stall -e '$L2_ASSOC'=8 -e '$L2_LINES'=4096 -x 
./runbenchmark.simics &> output.txt


Επιπλέον, όπου είναι δυνατόν, μπορείτε να χρησιμοποιείτε for loops για 
να καλύψετε τις διαφορετικές περιπτώσεις ενός πειράματος.

Π.χ.:

#!/bin/bash

for l2lines in 64 128 256
do
  for l2assoc in 2 4 8
  do
    ./simics -stall -e '$L2_ASSOC'=$l2assoc -e '$L2_LINES'=$l2lines -x 
./runbenchmark.simics &> output.txt
  done
done

Προσοχή: για να τερματίσει ο simics μετά το πέρας της προσομοίωσης και 
να μπορεί να εκτελεστεί η επόμενη, πρέπει να βάλετε την εντολή "exit" 
στο τέλος του runbenchmark.simics

N.




More information about the Advcomparch mailing list