Source code for subway.examples.rglocal
import os
from uuid import uuid4
from shutil import copyfile
from ..framework import PlainChk, PlainSub
from ..config import conf
[docs]class RgSub(PlainSub):
[docs] def __init__(self, resource_limit=None, _py="python3"):
self._py = _py
super().__init__(resource_limit=resource_limit)
[docs] def submit_pending(self, jobid):
mainp = os.path.join(conf["work_dir"], conf["executable"])
# shall use ./executables/randomg_run.py
inputp = os.path.join(conf["inputs_abs_dir"], jobid)
outputp = os.path.join(conf["outputs_abs_dir"], jobid)
command = "%s %s %s %s" % (self._py, mainp, inputp, outputp)
print("run %s" % command)
os.system(command)
[docs]class RgChk(PlainChk):
[docs] def check_kickstart(self):
# newinput = str(uuid1())
# L, l = self.params
# print(L, l)
# with open(os.path.join(conf["inputs_abs_dir"], newinput), "w") as f:
# f.writelines(["%s\n%s" % (L, l)])
#
# print("kickstart input")
# return [(newinput, {})]
r = []
for param in self.params:
nid = str(uuid4())
L, l = param
with open(os.path.join(conf["inputs_abs_dir"], nid), "w") as f:
f.writelines(["%s\n%s" % (L, l)])
r.append((nid, {}))
return r
[docs] def check_checking(self, outputpath):
with open(os.path.join(conf["inputs_abs_dir"], outputpath), "r") as f:
L, l = f.readlines()
l = float(l)
with open(os.path.join(conf["outputs_abs_dir"], outputpath), "r") as f:
r = f.readlines()
r = float(r[0])
if r < l:
print("find the converged result, computation stopped for this parameter")
return []
newinput = str(uuid4())
print("begin copy file...")
copyfile(
os.path.join(conf["inputs_abs_dir"], outputpath),
os.path.join(conf["inputs_abs_dir"], newinput),
)
return [(newinput, {})]