From d8aaea796a69f24854e7bfe624f3fbd81a5d9392 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sun, 30 May 2021 17:38:11 -0500
Subject: [PATCH] NumpyType: don't try to register bool when unpickling,
 already registered to 'char'

---
 loopy/types.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/loopy/types.py b/loopy/types.py
index de6208476..97483ec0c 100644
--- a/loopy/types.py
+++ b/loopy/types.py
@@ -129,7 +129,14 @@ class NumpyType(LoopyType):
     def __setstate__(self, state):
         target, name, dtype = state
         self.target = target
-        self.dtype = self.target.get_or_register_dtype([name], NumpyType(dtype))
+
+        if dtype == np.bool8:
+            # Bools are mapped to chars because OpenCL doesn't have them, so
+            # get_or_register_dtype will complain about duplicate registration.
+            # FIXME Tehcnically, this is OpenCL-specific.
+            self.dtype = np.dtype(dtype)
+        else:
+            self.dtype = self.target.get_or_register_dtype([name], NumpyType(dtype))
 
     def with_target(self, target):
         return type(self)(self.dtype, target)
-- 
GitLab