def runThread(agent, numTicks, numDevices, results, finished, histories): exp = SimpleSimulation(numDevices=numDevices, scenarioTemplate=REGULAR_SCENARIO_RANDOM, jobInterval=10, agentClass=agent) exp.setBatterySize(1e4) exp.reset() timeOffsets = dict() previousTime = dict() currentEnergy = dict() for dev in exp.devices: timeOffsets[dev] = 0 currentEnergy[dev] = dev.energyLevel previousTime[dev] = 0 dev.latestPower = None i = None try: for i in range(numTicks): if exp.finished: for dev in exp.devices: timeOffsets[dev] += dev.currentTime.current exp.reset() # for i in range(): usages = exp.simulateTick() if usages == []: usages = [(0, 0), (0, 0)] for duration, power in usages: currentTime = previousTime[exp.latestDevice] + duration results.put([ "%s Power" % exp.latestDevice, previousTime[exp.latestDevice], power * 1e3 ]) previousTime[exp.latestDevice] = currentTime results.put( ["%s Power" % exp.latestDevice, currentTime, power * 1e3]) time.sleep(0.2) except: traceback.print_exc(file=sys.stdout) print(agent, i) print("Error in experiment ̰:", exp.time) debug.printCache(200) sys.exit(0) finished.put(True) # assert simulationResults.learningHistory is not None # histories.put(simulationResults.learningHistory) # print("\nsaving history", simulationResults.learningHistory, '\nr') print("forward", counters.NUM_FORWARD, "backward", counters.NUM_BACKWARD)
from sim import debug from sim.simulations import constants from sim.simulations.SimpleSimulation import SimpleSimulation, NEW_JOB, PROCESS_SUBTASK from sim.tasks.job import job from sim.tasks.subtask import reconfigureFPGA debug.enabled = True # constants.NUM_DEVICES = 2 exp = SimpleSimulation(autoJobs=False) exp.reset() dev = exp.devices[0] dev2 = exp.devices[1] # queue manual jobs firstJob = job(dev, 1, True, exp.isEpisodeFinished, exp.incrementCompletedJobs) firstJob.started = True firstJob.active = True firstJob.creator = dev firstJob.processingNode = dev firstJob.owner = dev dev.currentJob = firstJob # exp.queueTask(1, NEW_JOB, dev) # queue subtasks reconf = reconfigureFPGA(firstJob) # exp.queueTask(0.999, PROCESS_SUBTASK, dev, subtask=reconf) # queue offloaded task secondJob = job(dev, 1, True, exp.isEpisodeFinished, exp.incrementCompletedJobs)