浏览代码

Use the compiler caches more often: write time is no longer relevant!

Yentl Van Tendeloo 8 年之前
父节点
当前提交
a2d06763c2
共有 2 个文件被更改,包括 23 次插入8 次删除
  1. 2 5
      interface/HUTN/hutn_compiler/compiler.py
  2. 21 3
      kernel/modelverse_kernel/compiled.py

+ 2 - 5
interface/HUTN/hutn_compiler/compiler.py

@@ -28,11 +28,8 @@ def fetch_cached(filename):
         md5 = md5digest(filename)
         cache_folder = os.path.abspath("%s/../caches/" % (os.path.dirname(os.path.abspath(__file__))))
         picklefile = cache_folder + "/%s.pickle" % md5
-        if os.path.getmtime(picklefile) > os.path.getmtime(filename):
-            with open(picklefile, "rb") as f:
-                return pickle.load(f)
-        else:
-            return None
+        with open(picklefile, "rb") as f:
+            return pickle.load(f)
     except:
         return None
 

+ 21 - 3
kernel/modelverse_kernel/compiled.py

@@ -1,7 +1,9 @@
 from modelverse_kernel.primitives import PrimitiveFinished
 import modelverse_jit.runtime as jit_runtime 
+import time
 
 def reverseKeyLookupMulti(a, b, **remainder):
+    #PROFILE start = time.time()
     edges, b_val, result = yield [("RO", [a]), ("RV", [b]), ("CN", [])]
     expanded_edges = yield [("RE", [i]) for i in edges]
     values = yield [("RV", [i[1]]) for i in expanded_edges]
@@ -16,9 +18,11 @@ def reverseKeyLookupMulti(a, b, **remainder):
     values = yield [("RE", [outgoing[0]]) for outgoing in outgoings]
     yield [("CE", [result, value[1]]) for value in values]
 
+    #PROFILE print("[COMPILED]reverseKeyLookupMulti : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(result)
 
 def reverseKeyLookup(a, b, **remainder):
+    #PROFILE start = time.time()
     edges_out, edges_in = yield [("RO", [a]), ("RI", [b])]
     options = set(edges_out) & set(edges_in)
     if options:
@@ -28,47 +32,58 @@ def reverseKeyLookup(a, b, **remainder):
         # Select one option randomly
         out_edge = out_edges.pop()
         e, = yield [("RE", [out_edge])]
-        s, t = e
-        raise PrimitiveFinished(t)
+        result = e[1]
     else:
         result, = yield [("CNV", ["(unknown: %s)" % b])]
-        raise PrimitiveFinished(result)
+    #PROFILE print("[COMPILED]reverseKeyLookup : %s : %s" % (time.time() - start, time.time() - start))
+    raise PrimitiveFinished(result)
 
 def set_copy(a, **remainder):
+    #PROFILE start = time.time()
     b, =         yield [("CN", [])]
     links, =     yield [("RO", [a])]
     exp_links = yield [("RE", [i]) for i in links]
     _ =         yield [("CE", [b, i[1]]) for i in exp_links]
+    #PROFILE print("[COMPILED]set_copy : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(b)
 
 def instantiated_name(a, b, **remainder):
+    #PROFILE start = time.time()
     name_value, = yield [("RV", [b])]
     if name_value == "":
         b, = yield [("CNV", ["__" + str(a)])]
+    #PROFILE print("[COMPILED]instantiated_name : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(b)
 
 def set_merge(a, b, **remainder):
+    #PROFILE start = time.time()
     outputs, = yield [("RO", [b])]
     values = yield [("RE", [i]) for i in outputs]
     yield [("CE", [a, i[1]]) for i in values]
+    #PROFILE print("[COMPILED]set_merge : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(a)
 
 def has_value(a, **remainder):
+    #PROFILE start = time.time()
     v, = yield [("RV", [a])]
     if v is None:
         result, = yield [("CNV", [False])]
     else:
         result, = yield [("CNV", [True])]
+    #PROFILE print("[COMPILED]has_value : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(result)
 
 def make_reverse_dictionary(a, **remainder):
+    #PROFILE start = time.time()
     reverse, = yield [("CN", [])]
     key_nodes, = yield [("RDK", [a])]
     values = yield [("RDN", [a, i]) for i in key_nodes]
     yield [("CD", [reverse, str(v), k]) for k, v in zip(key_nodes, values)]
+    #PROFILE print("[COMPILED]make_reverse_dictionary : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(reverse)
 
 def dict_eq(a, b, **remainder):
+    #PROFILE start = time.time()
     key_nodes, = yield [("RDK", [a])]
     key_values = yield [("RV", [i]) for i in key_nodes]
     values = yield [("RD", [a, i]) for i in key_values]
@@ -82,9 +97,11 @@ def dict_eq(a, b, **remainder):
     b_dict = dict(zip(key_values, values))
 
     result, = yield [("CNV", [a_dict == b_dict])]
+    #PROFILE print("[COMPILED]dict_eq : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(result)
 
 def string_substr(a, b, c, **remainder):
+    #PROFILE start = time.time()
     a_val, b_val, c_val = yield [("RV", [a]),
                                  ("RV", [b]),
                                  ("RV", [c])]
@@ -94,4 +111,5 @@ def string_substr(a, b, c, **remainder):
         new_value = ""
     
     result, = yield [("CNV", [new_value])]
+    #PROFILE print("[COMPILED]string_substr : %s : %s" % (time.time() - start, time.time() - start))
     raise PrimitiveFinished(result)