def stopJob(): pManager = processManager() jobId = request.args.get("job",'') job = getJob(jobId) if(job): warning = False if job[0]['status'] == 1: pManager.stopProcess(job[0]['id'], False) g.db.execute('UPDATE jobs SET status=2 WHERE id=? and status=1',[job[0]['id']]) g.db.commit() job = getJob(jobId) if job[0]['status'] == 2: #TODO handle db errors return '[{"result":"Success", "message":"Job '+str(job[0]['id'])+' for '+job[0]['map_name']+' was stopped.", "jobid":"'+str(job[0]['id'])+'"}]' else: #in the event the job finished already warning = True else: warning = True if warning: return '[{"result": "Warning","message":"Job was already finished or stopped","job":'+simplejson.dumps(job)+'}]' else: return "Job missing. Was it cleared already?"
def startJob(): from init import get_map_id # Cannot be imported at beginning of file because of circular import pManager = processManager() workspaceName = request.args.get("ws",'') mapName = request.args.get("map",'') jobTitle = request.args.get("title",'') zoomLevels = request.args.get("zoomlevels",'') metatile = request.args.get("metatile",'') extent = request.args.get("extent",'') mapEntry = get_map_id(mapName, workspaceName) if mapEntry is not None: cur = g.db.execute('INSERT INTO jobs(map, status, title) VALUES(?,?, ?)',[mapEntry, 1, jobTitle]) g.db.commit() jobid = cur.lastrowid; job = getJob(jobid) #finding the project's path curdir = os.path.realpath(__file__) last = curdir.find("application") projectdir = curdir[:last] + "application/workspaces/"+workspaceName+"/"+mapName pManager.addProcess(job[0], projectdir, zoomLevels, metatile, extent) return simplejson.dumps(job) else: return "ERROR: "+mapName+" map is unavailable or does not exist"
module_env['LSB_MCPU_HOSTS'] = LSB_MCPU_HOSTS module_env['MPI_REMSH'] = 'ssh -x -q -o StrictHostKeyChecking=no' if debug: print("==== BEGIN ENVIRONMENT DUMP ====") for param in os.environ.keys(): print(f'{param}: {os.environ[param]}') print("==== END ENVIRONMENT DUMP ====") # Launch application print(*abaqus_cmd, sep=" ", flush=True) try: with open(os.path.join(WORKDIR, f"{JOB_NAME}.err"), "w") as errorfile: abaqus_process = subprocess.Popen(abaqus_cmd, cwd=WORKDIR, env=module_env, stdout=subprocess.PIPE, stderr=errorfile) abaqus_result = processManager(abaqus_process, time_out=10800, check_timestamp=WORKDIR) outs, errs = abaqus_process.communicate(timeout=10) print(f"Abaqus output: {outs.decode()}", flush=True) except Exception as why: print("Abaqus block failed: " + str(why).split("\ ")[-1], flush=True) try: # Write Abaqus' error if available print(f" - Abaqus error message: {errs.decode()}") except (NameError, AttributeError): pass try: if abaqus_result == 0: print("Abaqus was run successfully", flush=True) exit_status = "Done" elif abaqus_result == 17:
def runMpiSGA(settingsFile = None): comm = MPI.COMM_WORLD rank = comm.Get_rank() if rank!=0: processManager.childProc() else: proc = processManager.processManager() s = None if not settingsFile: if len(sys.argv)<2: raise "Must suply settings file" settingsFile = sys.argv[1] s = settings.runSettings(settingsFile,sys.argv[2]) if s.hyperSettings['seed']: s.seed = s.hyperSettings['seed'] else: s.seed =time.time() random.seed(s.seed) mu = s.hyperSettings['mu'] childK = s.hyperSettings['childK'] lamb = s.hyperSettings['lambda'] maxEvals = s.hyperSettings['evaluations'] mutateRate = s.hyperSettings['mutateRate'] mateRate = s.hyperSettings['mateRate'] cur = mu pop = [] i = 0 while i<mu: x = bbsa.bbsa(copy.deepcopy(s)) if not x.evalExist() or not x.lastExist(): continue proc.add(x) i+=1 proc.start() proc.wait(mu) pop = proc.getPop() pop.sort() for p in pop: print p.fitness fronts = pareto.pareto(pop) while cur<maxEvals: c = 0 childs = [] while c<lamb: choice = random.choice([0,1,2]) rate = random.random() if c+1!=lamb and rate<mateRate: mom = fronts.tournSelect(childK) dad = fronts.tournSelect(childK) x,y = mom.mate(dad) if x.evalExist() and x.lastExist(): proc.add(x) c+=1 if y.evalExist() and y.lastExist(): proc.add(y) c+=1 elif rate<mateRate+mutateRate: x=fronts.tournSelect(childK).mutate() if x.evalExist() and x.lastExist(): proc.add(x) c+=1 else: x = fronts.tournSelect(childK).altMutate() if x.evalExist(): proc.add(x) c+=1 proc.start() proc.wait(lamb) childs = proc.getPop() pop = fronts.getPop() pop.extend(childs) fronts = pareto.pareto(pop) fronts.keepMu(mu) cur+=lamb su = 0.0 ave = 0.0 for i in xrange(mu): su+=fronts.pop[i].fitness ave = su/mu i = 0 print cur, ave, len(fronts.fronts.keys()) fronts.fronts[0].sort() for ind in fronts.fronts[0]: print"\t",i,ind.fitness,",",ind.aveEval,",",ind.time,",",ind.distance,"\t",ind.name i+=1 ind.makeGraph() ind.plot() ind.logger.log() ind.makeProg() i = 0 fronts.fronts[0].sort() for ind in fronts.fronts[0]: print"\t",i,ind.fitness,",",ind.aveEval,",",ind.time,",",ind.distance,"\t",ind.name i+=1 ind.directory += "finalFront/" ind.logger.name = ind.name ind.makeGraph() ind.plot() ind.logger.log() ind.makeProg() proc.kill()
def runMpiNSGA(settingsFile=None): comm = MPI.COMM_WORLD rank = comm.Get_rank() if rank != 0: processManager.childProc() else: proc = processManager.processManager() s = None if not settingsFile: if len(sys.argv) < 2: raise "Must supply settings file" settingsFile = sys.argv[1] s = settings.runSettings(settingsFile, sys.argv[2]) if s.hyperSettings['seed']: s.seed = s.hyperSettings['seed'] else: s.seed = time.time() random.seed(s.seed) mu = s.hyperSettings['mu'] childK = s.hyperSettings['childK'] lamb = s.hyperSettings['lambda'] maxEvals = s.hyperSettings['evaluations'] mutateRate = s.hyperSettings['mutateRate'] mateRate = s.hyperSettings['mateRate'] cur = mu pop = [] i = 0 while i < mu: x = bbsa.bbsa(copy.deepcopy(s)) if not x.evalExist() or not x.lastExist(): continue proc.add(x) i += 1 #print "start" proc.start() #print "wait" proc.wait(mu) #print "not wait" pop = proc.getPop() pop.sort() for p in pop: print p.fitness while cur < maxEvals: c = 0 childs = [] while c < lamb: choice = random.choice([0, 1, 2]) rate = random.random() if c + 1 != lamb and rate < .3: mom = ktourn(pop, childK) dad = ktourn(pop, childK) x, y = mom.mate(dad) if x.evalExist() and x.lastExist(): proc.add(x) c += 1 if y.evalExist() and y.lastExist(): proc.add(y) c += 1 elif rate < .6: x = ktourn(pop, childK).mutate() if x.evalExist() and x.lastExist(): proc.add(x) c += 1 else: x = ktourn(pop, childK).altMutate() if x.evalExist(): proc.add(x) c += 1 #print "start" proc.start() #print "wait" proc.wait(lamb) #print "no wait" childs = proc.getPop() pop.extend(childs) pop.sort() pop.reverse() pop = pop[:mu] cur += lamb su = 0.0 ave = 0.0 for i in xrange(len(pop)): su += pop[i].fitness ave = su / len(pop) print cur, ave, pop[0].fitness, pop[0].aveEval, pop[0].aveOps pop[0].makeGraph() pop[0].plot() pop[0].logger.log() pop[0].makeProg() print print pop[0].fitness, pop[0].aveEval print pop[0].toDict() pop[0].makeProg() proc.kill()
def runMpiNSGA(settingsFile = None): comm = MPI.COMM_WORLD rank = comm.Get_rank() if rank!=0: processManager.childProc() else: proc = processManager.processManager() s = None if not settingsFile: if len(sys.argv)<2: raise "Must supply settings file" settingsFile = sys.argv[1] s = settings.runSettings(settingsFile,sys.argv[2]) if s.hyperSettings['seed']: s.seed = s.hyperSettings['seed'] else: s.seed =time.time() random.seed(s.seed) mu = s.hyperSettings['mu'] childK = s.hyperSettings['childK'] lamb = s.hyperSettings['lambda'] maxEvals = s.hyperSettings['evaluations'] mutateRate = s.hyperSettings['mutateRate'] mateRate = s.hyperSettings['mateRate'] cur = mu pop = [] i = 0 while i<mu: x = bbsa.bbsa(copy.deepcopy(s)) if not x.evalExist() or not x.lastExist(): continue proc.add(x) i+=1 #print "start" proc.start() #print "wait" proc.wait(mu) #print "not wait" pop = proc.getPop() pop.sort() for p in pop: print p.fitness while cur<maxEvals: c = 0 childs = [] while c<lamb: choice = random.choice([0,1,2]) rate = random.random() if c+1!=lamb and rate<.3: mom = ktourn(pop,childK) dad = ktourn(pop,childK) x,y = mom.mate(dad) if x.evalExist() and x.lastExist(): proc.add(x) c+=1 if y.evalExist() and y.lastExist(): proc.add(y) c+=1 elif rate<.6: x=ktourn(pop,childK).mutate() if x.evalExist() and x.lastExist(): proc.add(x) c+=1 else: x = ktourn(pop,childK).altMutate() if x.evalExist(): proc.add(x) c+=1 #print "start" proc.start() #print "wait" proc.wait(lamb) #print "no wait" childs = proc.getPop() pop.extend(childs) pop.sort() pop.reverse() pop = pop[:mu] cur+=lamb su = 0.0 ave = 0.0 for i in xrange(len(pop)): su+=pop[i].fitness ave = su/len(pop) print cur, ave,pop[0].fitness,pop[0].aveEval,pop[0].aveOps pop[0].makeGraph() pop[0].plot() pop[0].logger.log() pop[0].makeProg() print print pop[0].fitness,pop[0].aveEval print pop[0].toDict() pop[0].makeProg() proc.kill()