diff --git a/graph_tools/misc.py b/graph_tools/misc.py
index 1e66752458c2804c87de640ebd21ce64ffd927a9..b3b8f04bbeaf8c2e007388e9a0733bfe50907bc5 100644
--- a/graph_tools/misc.py
+++ b/graph_tools/misc.py
@@ -175,6 +175,9 @@ def _init_():
       r, c = x
       return (r, c, edge_model_join(gadgets[r], gadgets[c]).eval(P, no_cache=True))
 
+    # cache results for gadgets
+    for g in gadgets: g.eval_gadget(P)
+
     it = parmap(worker, inp, nprocs=threads, in_order=False,
                 chunksize=100, out_chunksize=100)
     m = matrix(QQ, N, N, sparse=True)