- Timestamp:
- Aug 28, 2014, 6:47:35 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/reconfiguration/platforms/tsar_generic_iob/scripts/run.py
r778 r782 8 8 import arch 9 9 import faultyprocs 10 from parse import parse_ffstend 10 11 11 12 # define constants 13 # list of mesh dimensions 12 14 configs = [] 13 configs.append([2 ,2 ]) 14 configs.append([4 ,4 ]) 15 configs.append([8 ,8 ]) 16 configs.append([16,16]) 15 configs.append([2 , 2 ]) # 4 clusters 16 configs.append([4 , 2 ]) # 8 clusters 17 configs.append([4 , 4 ]) # 16 clusters 18 configs.append([8 , 4 ]) # 32 clusters 19 configs.append([8 , 8 ]) # 64 clusters 20 configs.append([16, 8 ]) # 128 clusters 21 configs.append([16, 16]) # 256 clusters 17 22 18 faultylist = [[(0,0,1), (0,1,1), (1,0,1), (1,0,2), (1,0,3), (1,1,1), (1,1,3)]] 23 # list of faulty cores 24 faultylist = [] 25 faultylist.append([]) # 0 faulty core 26 faultylist.append([(0,0,1)]) # 1 faulty core 27 faultylist.append([(0,0,1), (0,0,3)]) # 2 faulty cores 28 faultylist.append([(1,0,0), (1,0,2), (1,0,3)]) # 1 faulty cluster 29 faultylist.append([(1,0,0), (1,0,2), (1,0,3), 30 (1,1,1), (1,1,2), (1,1,3)]) # 2 faulty cluster 19 31 32 # number of processors per cluster 20 33 nprocs = 4 21 34 … … 27 40 28 41 # repeat while configurations is not empty 29 for f aulty in faultylist:42 for f in xrange(len(faultylist)): 30 43 for x,y in configs: 31 confdir = "{0}/conf/config_{1}c".format(basedir, x*y) 44 confname = "conf/config_{0}c{1}f".format(x*y, f) 45 confdir = os.path.join(basedir, confname) 32 46 print "[ run.py ] generating files for {0}".format(confdir) 33 47 34 48 # 1. generate configuration and ouput directories 35 49 try: 36 os.makedirs( confdir + "/config", 0755)50 os.makedirs(os.path.join(confdir, "config"), 0755) 37 51 except OSError: 38 52 pass # directory already exists => do nothing 39 53 40 54 # 2. generate hard_config.h and fault_config.h files 41 arch.main( x = x, y = y, p = nprocs, 42 hard_path = confdir + "/config/hard_config.h", 43 xml_path = confdir + "/config/map.xml" ) 44 faultyprocs.generate(faulty, confdir + "/config/fault_config.h") 55 hardpath = os.path.join(confdir, "config/hard_config.h") 56 xmlpath = os.path.join(confdir, "config/map.xml") 57 faultpath = os.path.join(confdir, "config/fault_config.h") 58 arch.main( x, y, nprocs, hardpath, xmlpath) 59 faultyprocs.generate(faultylist[f], faultpath) 45 60 46 61 # 3. compile simulator executable 47 dst = basedir + "/hard_config.h"62 dst = os.path.join(basedir, "hard_config.h") 48 63 if os.path.lexists(dst): os.unlink(dst) 49 os.symlink( confdir + "/config/hard_config.h", dst)64 os.symlink(hardpath, dst) 50 65 subprocess.call(["make", 51 66 "-C", basedir … … 53 68 54 69 # 4. compile distributed boot executable 55 dst = confdir + "/config/boot_config.h"70 dst = os.path.join(confdir, "config/boot_config.h") 56 71 if os.path.lexists(dst): os.unlink(dst) 57 os.symlink( basedir + "/soft/config/boot_config.h", dst)72 os.symlink(os.path.join(basedir, "soft/config/boot_config.h"), dst) 58 73 subprocess.call(["make", 59 "-C", basedir + "/soft",74 "-C", os.path.join(basedir, "soft"), 60 75 "CONFDIR=" + confdir 61 76 ]) … … 65 80 os.environ["SOCLIB_TTY"] = "FILES" 66 81 67 if x*y <= 4: ompthreads = x*y 68 else: ompthreads = 4 69 with open(confdir + "/log", "w") as logfile: 82 if x*y <= 4 : ompthreads = x*y 83 elif x*y <= 16: ompthreads = 4 84 else: ompthreads = 8 85 with open(os.path.join(confdir, "log"), "w") as logfile: 70 86 print "executing simul.x" 71 subprocess.call([ basedir + "/simul.x",72 "-SOFT" , basedir + "/soft/build/soft.elf",87 subprocess.call([os.path.join(basedir, "simul.x"), 88 "-SOFT" , os.path.join(basedir, "soft/build/soft.elf"), 73 89 "-DISK" , "/dev/null", 74 90 "-THREADS", str(ompthreads), … … 79 95 80 96 # 6. move simulation terminal output into the target config dir 81 os.rename("term0", confdir + "/term")97 os.rename("term0", os.path.join(confdir, "term")) 82 98 83 99 # end for each config 84 100 #end for each faulty 85 101 102 # parse terminal logs to obtain statistics 103 statsdir = os.path.join(basedir, 'stats') 104 try: 105 os.makedirs(statsdir, 0755) 106 except OSError: 107 pass # directory already exists => do nothing 108 109 parse_ffstend(configs, 110 len(faultylist), 111 os.path.join(basedir, 'conf'), 112 os.path.join(statsdir, 'ffst_stats.dat')) 113 86 114 # vim: tabstop=4 : softtabstop=4 : shiftwidth=4 : expandtab
Note: See TracChangeset
for help on using the changeset viewer.