try alternative API for expe module
This commit is contained in:
parent
03fd19b088
commit
5e48e52941
1 changed files with 34 additions and 31 deletions
65
expe.py
65
expe.py
|
|
@ -1,46 +1,49 @@
|
||||||
|
import subprocess
|
||||||
|
import itertools
|
||||||
|
|
||||||
|
|
||||||
|
def batchsplit(axe, njobs):
|
||||||
|
for i in range(0,len(axe),njobs):
|
||||||
|
yield axe[i:i+njobs]
|
||||||
|
|
||||||
|
|
||||||
|
def batchrun(key, jobs, params, cmd_tpl):
|
||||||
|
procs = []
|
||||||
|
for job in jobs:
|
||||||
|
params[key] = job
|
||||||
|
cmd = cmd_tpl.format(**params)
|
||||||
|
p = subprocess.Popen(cmd, shell=True)
|
||||||
|
procs.append(p)
|
||||||
|
|
||||||
|
for job in procs:
|
||||||
|
job.wait()
|
||||||
|
|
||||||
|
|
||||||
|
def expe(axes):
|
||||||
|
for p in itertools.product(*[axes[k] for k in axes]):
|
||||||
|
params = {}
|
||||||
|
for i in range(len(axes)):
|
||||||
|
params[list(axes.keys())[i]] = p[i]
|
||||||
|
yield params
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
# can = argparse.ArgumentParser()
|
|
||||||
#
|
|
||||||
# can.add_argument("-n", "--nb-sensors", metavar="NB", default=3, type=int,
|
|
||||||
# help="Number of sensors")
|
|
||||||
#
|
|
||||||
# can.add_argument("-r", "--sensor-range", metavar="RATIO", default=0.3, type=float,
|
|
||||||
# help="Sensors' range (as a fraction of domain width)")
|
|
||||||
#
|
|
||||||
# can.add_argument("-w", "--domain-width", metavar="NB", default=30, type=int,
|
|
||||||
# help="Domain width (a number of cells)")
|
|
||||||
#
|
|
||||||
# can.add_argument("-i", "--iters", metavar="NB", default=100, type=int,
|
|
||||||
# help="Maximum number of iterations")
|
|
||||||
#
|
|
||||||
# the = can.parse_args()
|
|
||||||
|
|
||||||
const_args=" --nb-sensors 5 --sensor-range 0.2 --domain-width 50 --iters 10000"
|
const_args=" --nb-sensors 5 --sensor-range 0.2 --domain-width 50 --iters 10000"
|
||||||
solvers = ["num_greedy","bit_greedy","num_rand","bit_rand"]
|
solvers = ["num_greedy","bit_greedy","num_rand","bit_rand"]
|
||||||
nbruns = 100
|
nbruns = 2
|
||||||
outdir = "results"
|
outdir = "results"
|
||||||
|
|
||||||
if not os.path.exists(outdir):
|
if not os.path.exists(outdir):
|
||||||
os.mkdir(outdir)
|
os.mkdir(outdir)
|
||||||
|
|
||||||
|
cmd_tpl = "python3 snp.py --no-plot --dir {outdir} --seed {{seed}} --solver {{solver}}".format(outdir=outdir)
|
||||||
for seed in range(nbruns):
|
for seed in range(nbruns):
|
||||||
procs = []
|
for params in expe({"seed":[seed]}):
|
||||||
for solver in solvers:
|
for by_four in batchsplit(solvers, 4):
|
||||||
print(seed,solver)
|
batchrun("solver", by_four, params, cmd_tpl)
|
||||||
p = subprocess.Popen(
|
|
||||||
"python3 snp.py "
|
|
||||||
+ const_args
|
|
||||||
+ " --no-plot --dir {} --seed {} --solver {}"
|
|
||||||
.format(outdir,seed,solver),
|
|
||||||
shell=True
|
|
||||||
)
|
|
||||||
procs.append(p)
|
|
||||||
|
|
||||||
for proc in procs:
|
|
||||||
proc.wait()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue