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)
Example #2
0
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)