From db23352d09dc8087a564df3b559fafe4653889b9 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 6 Feb 2014 18:25:03 -0600
Subject: [PATCH] Test, fix picklability of loopy kernels

---
 loopy/kernel/__init__.py | 10 +++++++---
 loopy/kernel/creation.py |  1 -
 test/test_loopy.py       |  3 +++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py
index 81a64484c..e66838ef1 100644
--- a/loopy/kernel/__init__.py
+++ b/loopy/kernel/__init__.py
@@ -135,7 +135,6 @@ class LoopKernel(RecordWithoutPickling):
         on expressions the user specifies later.
 
     .. attribute:: cache_manager
-    .. attribute:: isl_context
     .. attribute:: options
 
         An instance of :class:`loopy.Options`
@@ -170,7 +169,6 @@ class LoopKernel(RecordWithoutPickling):
             applied_iname_rewrites=[],
             cache_manager=None,
             index_dtype=np.int32,
-            isl_context=None,
             options=None,
 
             state=kernel_state.INITIAL,
@@ -283,7 +281,6 @@ class LoopKernel(RecordWithoutPickling):
                 function_manglers=function_manglers,
                 symbol_manglers=symbol_manglers,
                 index_dtype=index_dtype,
-                isl_context=isl_context,
                 options=options,
                 state=state)
 
@@ -472,6 +469,13 @@ class LoopKernel(RecordWithoutPickling):
     def get_home_domain_index(self, iname):
         return self._get_home_domain_map()[iname]
 
+    @memoize_method
+    def isl_context(self):
+        for dom in self.domains:
+            return dom.get_ctx()
+
+        assert False
+
     @memoize_method
     def combine_domains(self, domains):
         """
diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index e3f7ab14e..285105103 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -1086,7 +1086,6 @@ def make_kernel(domains, instructions, kernel_data=["..."], **kwargs):
             isl_context = domain.get_ctx()
     if isl_context is None:
         isl_context = isl.Context()
-    kwargs["isl_context"] = isl_context
 
     # }}}
 
diff --git a/test/test_loopy.py b/test/test_loopy.py
index 07a737900..a3f07f299 100644
--- a/test/test_loopy.py
+++ b/test/test_loopy.py
@@ -1500,6 +1500,9 @@ def test_rob_stroud_bernstein_full(ctx_factory):
                 slabs=(0, 1))
         knl = lp.tag_inames(knl, dict(i2="l.1", alpha1="unr", alpha2="unr"))
 
+    from pickle import dumps, loads
+    knl = loads(dumps(knl))
+
     print lp.CompiledKernel(ctx, knl).get_highlighted_code(
             dict(
                 qpts=np.float32,
-- 
GitLab