-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathbatch.py
More file actions
54 lines (46 loc) · 1.52 KB
/
Copy pathbatch.py
File metadata and controls
54 lines (46 loc) · 1.52 KB
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
import os
import sys
import subprocess
import string
import shutil
from CellModeller.Simulator import Simulator
max_cells = 50000
cell_buffer = 256
def simulate(modfilename, platform, device, steps=50):
(path,name) = os.path.split(modfilename)
modname = str(name).split('.')[0]
sys.path.append(path)
sim = Simulator(modname, 0.025, clPlatformNum=platform, clDeviceNum=device, saveOutput=True)
while len(sim.cellStates) < max_cells-cell_buffer:
sim.step()
def main():
# Get module name to load
if len(sys.argv)<2:
print("Please specify a model (.py) file")
exit(0)
else:
moduleName = sys.argv[1]
# Get OpenCL platform/device numbers
if len(sys.argv)<3:
# User input of OpenCL setup
import pyopencl as cl
# Platform
platforms = cl.get_platforms()
print("Select OpenCL platform:")
for i in range(len(platforms)):
print(('press '+str(i)+' for '+str(platforms[i])))
platnum = int(eval(input('Platform Number: ')))
# Device
devices = platforms[platnum].get_devices()
print("Select OpenCL device:")
for i in range(len(devices)):
print(('press '+str(i)+' for '+str(devices[i])))
devnum = int(eval(input('Device Number: ')))
else:
platnum = int(sys.argv[2])
devnum = int(sys.argv[3])
# Set up complete, now run the simulation
simulate(moduleName, platnum, devnum)
# Make sure we are running as a script
if __name__ == "__main__":
main()