|
@@ -194,7 +194,6 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
# No MvK, so set it with the root we have just received (or should have received)
|
|
|
self.state.root = mvs_input[0]
|
|
|
self.state.mvk = MvK(self.state.root)
|
|
|
- #self.state.mvk.jit.set_jit_enabled(False)
|
|
|
else:
|
|
|
self.state.reply = mvs_input
|
|
|
self.state.waiting = False
|
|
@@ -236,7 +235,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
commands = [("RV", [self.state.tasks[0]])]
|
|
|
else:
|
|
|
self.state.current_task = self.state.reply[0]
|
|
|
- #print("Processing task %s at time %s" % (self.state.current_task, self.time_last))
|
|
|
+ print("Processing task %s at time %s" % (self.state.current_task, self.time_last))
|
|
|
self.state.start_task_time = self.state.current_time
|
|
|
if self.state.current_task.startswith("__"):
|
|
|
# Don't process this task and force termination of task
|
|
@@ -250,6 +249,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
commands = self.state.mvk.execute_yields(self.state.current_task, "set_input", [value], self.state.reply)
|
|
|
if PROFILE:
|
|
|
print("rule_generation: %.17f" % ((time.time() - start)))
|
|
|
+ #self.state.rule_generation = time.time() - start
|
|
|
self.state.mvk.returnvalue = None
|
|
|
if commands is None:
|
|
|
self.state.inputs[self.state.current_task].pop(0)
|
|
@@ -262,6 +262,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
commands = self.state.mvk.execute_yields(self.state.current_task, "execute_rule", [], self.state.reply)
|
|
|
if PROFILE:
|
|
|
print("rule_generation: %.17f" % ((time.time() - start)))
|
|
|
+ #self.state.rule_generation = time.time() - start
|
|
|
except SleepKernel:
|
|
|
commands = None
|
|
|
self.state.mvk.success = False
|
|
@@ -272,6 +273,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
commands = self.state.mvk.execute_yields(self.state.current_task, "get_output", [], self.state.reply)
|
|
|
if PROFILE:
|
|
|
print("rule_generation: %.17f" % ((time.time() - start)))
|
|
|
+ #self.state.rule_generation = time.time() - start
|
|
|
else:
|
|
|
raise Exception("Phase: " + str(self.state.phase))
|
|
|
|
|
@@ -387,7 +389,7 @@ class Network(AtomicDEVS):
|
|
|
def intTransition(self):
|
|
|
self.state.processing.pop(0)
|
|
|
if self.state.processing:
|
|
|
- self.state.timer = (len(self.state.processing[0]) / float(self.bandwidth) + self.latency)
|
|
|
+ self.state.timer = (len(self.state.processing[0]) * 8 / float(self.bandwidth) + self.latency)
|
|
|
else:
|
|
|
self.state.timer = float("inf")
|
|
|
return self.state
|
|
@@ -398,14 +400,16 @@ class Network(AtomicDEVS):
|
|
|
self.state.timer = 0
|
|
|
for v in inputs[self.input_port]:
|
|
|
self.state.processing.append(json.dumps(v))
|
|
|
+ # NOTE data is in bytes, while bandwidth is in bits, so multiply by 8
|
|
|
if len(self.state.processing) > 0:
|
|
|
- self.state.timer = (len(self.state.processing[0]) / float(self.bandwidth) + self.latency)
|
|
|
+ self.state.timer = (len(self.state.processing[0]) * 8 / float(self.bandwidth) + self.latency)
|
|
|
return self.state
|
|
|
|
|
|
def outputFnc(self):
|
|
|
return {self.output_port: [json.loads(self.state.processing[0])]}
|
|
|
|
|
|
def timeAdvance(self):
|
|
|
+ #print("Timer: " + str(self.state.timer))
|
|
|
return self.state.timer
|
|
|
|
|
|
class System(CoupledDEVS):
|
|
@@ -478,22 +482,22 @@ class System(CoupledDEVS):
|
|
|
self.mvi2mvk = self.addSubModel(Network(\
|
|
|
name = "mvi2mvk",
|
|
|
latency = mvi2mvk_latency,
|
|
|
- bandwidth = mvi2mvk_bandwidth
|
|
|
+ bandwidth = mvi2mvk_bandwidth,
|
|
|
))
|
|
|
self.mvk2mvs = self.addSubModel(Network(\
|
|
|
name = "mvk2mvs",
|
|
|
latency = mvk2mvs_latency,
|
|
|
- bandwidth = mvk2mvs_bandwidth
|
|
|
+ bandwidth = mvk2mvs_bandwidth,
|
|
|
))
|
|
|
self.mvs2mvk = self.addSubModel(Network(\
|
|
|
name = "mvs2mvk",
|
|
|
latency = mvs2mvk_latency,
|
|
|
- bandwidth = mvs2mvk_bandwidth
|
|
|
+ bandwidth = mvs2mvk_bandwidth,
|
|
|
))
|
|
|
self.mvk2mvi = self.addSubModel(Network(\
|
|
|
name = "mvk2mvi",
|
|
|
latency = mvk2mvi_latency,
|
|
|
- bandwidth = mvk2mvi_bandwidth
|
|
|
+ bandwidth = mvk2mvi_bandwidth,
|
|
|
))
|
|
|
|
|
|
self.connectPorts(self.mvi_manager.to_mvk, self.mvk.from_mvi)
|
|
@@ -515,13 +519,13 @@ args = {
|
|
|
"taskname": taskname,
|
|
|
"operations": operations,
|
|
|
"finish_on": finish_on,
|
|
|
- "mvi2mvk_latency": 0.000001,
|
|
|
+ "mvi2mvk_latency": 0.0000001,
|
|
|
"mvi2mvk_bandwidth": 50000000000,
|
|
|
- "mvk2mvs_latency": 0.000001,
|
|
|
+ "mvk2mvs_latency": 0.0000001,
|
|
|
"mvk2mvs_bandwidth": 50000000000,
|
|
|
- "mvs2mvk_latency": 0.000001,
|
|
|
+ "mvs2mvk_latency": 0.0000001,
|
|
|
"mvs2mvk_bandwidth": 50000000000,
|
|
|
- "mvk2mvi_latency": 0.000001,
|
|
|
+ "mvk2mvi_latency": 0.0000001,
|
|
|
"mvk2mvi_bandwidth": 50000000000,
|
|
|
"time_per_phase": 0.05,
|
|
|
# Automatically filled in from calibration results, just here to prevent crashes (results for my UA desktop)
|