|
@@ -5,12 +5,15 @@ import modelverse_kernel.jit as jit
|
|
|
from collections import defaultdict
|
|
|
import sys
|
|
|
import time
|
|
|
+import json
|
|
|
|
|
|
if sys.version > '3': # pragma: no cover
|
|
|
string_types = (str,)
|
|
|
else:
|
|
|
string_types = (str, unicode)
|
|
|
|
|
|
+PROFILE = False
|
|
|
+
|
|
|
class ModelverseKernel(object):
|
|
|
|
|
|
counter = 0
|
|
@@ -37,6 +40,14 @@ class ModelverseKernel(object):
|
|
|
|
|
|
self.debug_info = defaultdict(list)
|
|
|
|
|
|
+ if PROFILE:
|
|
|
+ self.prev_timers = {}
|
|
|
+ self.end_timers = {}
|
|
|
+ self.profiling = True
|
|
|
+ self.profile_file = open("../profiling_results", 'w')
|
|
|
+ else:
|
|
|
+ self.profiling = False
|
|
|
+
|
|
|
def try_to_protect(self, var):
|
|
|
if isinstance(var, dict) and "id" in var and var['id'] is not None:
|
|
|
return set([var['id']])
|
|
@@ -451,6 +462,9 @@ class ModelverseKernel(object):
|
|
|
self.jit.register_compiled(inst, compiled_func, suggested_name)
|
|
|
|
|
|
# Run the compiled function.
|
|
|
+ if self.profiling:
|
|
|
+ self.profile_file.write(json.dumps([gen.__name__ for gen in self.request_handlers[taskname]['execute_rule'].generator_stack if gen is not None and gen.__name__ not in ['execute_rule', 'execute_jit']] + [time.time() - self.prev_timers[taskname]]) + "\n")
|
|
|
+ self.prev_timers[taskname] = time.time()
|
|
|
if compiled_func == primitive_functions.dict_read:
|
|
|
if "value" not in params['b']:
|
|
|
params['b']['value'], = yield [("RV", [params['b']['id']])]
|
|
@@ -464,6 +478,9 @@ class ModelverseKernel(object):
|
|
|
result, = results
|
|
|
if result is None:
|
|
|
result = {'id': None, 'value': None}
|
|
|
+ if self.profiling:
|
|
|
+ self.profile_file.write(json.dumps([gen.__name__ for gen in self.request_handlers[taskname]['execute_rule'].generator_stack if gen is not None and gen.__name__ not in ['execute_rule', 'execute_jit']] + [compiled_func.__name__, time.time() - self.prev_timers[taskname]]) + "\n")
|
|
|
+ self.prev_timers[taskname] = time.time()
|
|
|
|
|
|
if store:
|
|
|
# Clean up the current stack, as if a return happened
|