-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlaunchSimulationsMPI.py
60 lines (52 loc) · 1.95 KB
/
launchSimulationsMPI.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import sys
from mpi4py import MPI
from random import shuffle
import datetime
import pickle
worldComm = MPI.COMM_WORLD
worldSize = worldComm.Get_size()
worldRank = worldComm.Get_rank()
fileList = "todoList_missing.dat"
todoList = pickle.load(open(fileList, "rb"))
doneFile = "done_list_%02d.dat" % worldRank
try:
doneList = pickle.load(open(doneFile, "rb"))
except:
doneList = []
def writeOut(msg):
sys.stdout.write(msg + "\n")
sys.stdout.flush()
def saveWorkDone(tmp, done):
done.append(tmp)
pickle.dump(done, open(doneFile, "wb"))
if worldRank == 0:
writeOut("Got %d entries from %s:\n%r" % (len(todoList), fileList, todoList))
for tmp_pars in todoList[worldRank::worldSize]:
if tmp_pars in doneList: continue
son_scheme, sample_scheme, rho, nu, nf, neve, runIDX = tmp_pars
if nu > rho: continue
if son_scheme == 0:
if sample_scheme == 0:
from codeSon0Sample0.Urns import Urnes_Evolution as UE
elif sample_scheme == 1:
from codeSon0Sample1.Urns import Urnes_Evolution as UE
elif sample_scheme == 2:
from codeSon0Sample2.Urns import Urnes_Evolution as UE
elif son_scheme == 1:
if sample_scheme == 0:
from codeSon1Sample0.Urns import Urnes_Evolution as UE
elif sample_scheme == 1:
from codeSon1Sample1.Urns import Urnes_Evolution as UE
elif sample_scheme == 2:
from codeSon1Sample2.Urns import Urnes_Evolution as UE
elif son_scheme == 2:
if sample_scheme == 0:
from codeSon2Sample0.Urns import Urnes_Evolution as UE
elif sample_scheme == 1:
from codeSon2Sample1.Urns import Urnes_Evolution as UE
elif sample_scheme == 2:
from codeSon2Sample2.Urns import Urnes_Evolution as UE
writeOut("Process %03d doing %r at %r..." % (worldRank, tmp_pars, datetime.datetime.now()))
UE(rho, nu, nf, neve, runIDX)
del UE
saveWorkDone(tmp_pars, doneList)