From 132fac14acc88f801b4cd4440b4410e337734775 Mon Sep 17 00:00:00 2001 From: Kaushik Kulkarni Date: Fri, 19 Jul 2019 13:46:36 -0500 Subject: [PATCH 1/2] defines update_persistent_hash for ArrayArg --- loopy/kernel/data.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/loopy/kernel/data.py b/loopy/kernel/data.py index dd68c950e..975d7b3ef 100644 --- a/loopy/kernel/data.py +++ b/loopy/kernel/data.py @@ -385,6 +385,14 @@ class ArrayArg(ArrayBase, KernelArgument): + " aspace: %s" % aspace_str) + def update_persistent_hash(self, key_hash, key_builder): + """Custom hash computation function for use with + :class:`pytools.persistent_dict.PersistentDict`. + """ + super(ArrayArg, self).update_persistent_hash(key_hash, key_builder) + key_builder.rec(key_hash, self.address_space) + key_builder.rec(key_hash, self.is_output_only) + # Making this a function prevents incorrect use in isinstance. # Note: This is *not* deprecated, as it is super-common and -- GitLab From 51917a4b513434f6c09b2df38bcab2c328f3c5ba Mon Sep 17 00:00:00 2001 From: Kaushik Kulkarni Date: Fri, 19 Jul 2019 13:47:26 -0500 Subject: [PATCH 2/2] adds test to check persistent_hashing for ArrayArg's extra kwargs --- test/test_loopy.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/test_loopy.py b/test/test_loopy.py index 231b70bf7..119d57adf 100644 --- a/test/test_loopy.py +++ b/test/test_loopy.py @@ -3003,6 +3003,18 @@ def test_shape_mismatch_check(ctx_factory): prg(queue, a=a, b=b) +def test_array_arg_extra_kwargs_persis_hash(): + from loopy.tools import LoopyKeyBuilder + + a = lp.ArrayArg('a', shape=(10, ), dtype=np.float64, + address_space=lp.AddressSpace.LOCAL) + not_a = lp.ArrayArg('a', shape=(10, ), dtype=np.float64, + address_space=lp.AddressSpace.PRIVATE) + + key_builder = LoopyKeyBuilder() + assert key_builder(a) != key_builder(not_a) + + if __name__ == "__main__": if len(sys.argv) > 1: exec(sys.argv[1]) -- GitLab