diff --git a/loopy/expression.py b/loopy/expression.py index a363013ea0549827438124150a1e4c0c2af94c64..40d1aab88326d9b0bb98d96b8cd006316d051688 100644 --- a/loopy/expression.py +++ b/loopy/expression.py @@ -51,7 +51,8 @@ def dtype_to_type_context(target, dtype): if isinstance(dtype, NumpyType) and dtype.dtype in [np.float32, np.complex64]: return 'f' if target.is_vector_dtype(dtype): - return dtype_to_type_context(target, dtype.fields["x"][0]) + return dtype_to_type_context( + target, NumpyType(dtype.numpy_dtype.fields["x"][0])) return None diff --git a/loopy/target/cuda.py b/loopy/target/cuda.py index 2fa510b5f83887026697e032a8b463c5df8ed2d1..89d090b7af0d03b6005755c68027e27795378cc8 100644 --- a/loopy/target/cuda.py +++ b/loopy/target/cuda.py @@ -202,7 +202,8 @@ class CudaTarget(CTarget): return result def is_vector_dtype(self, dtype): - return dtype.numpy_dtype in list(vec.types.values()) + return (isinstance(dtype, NumpyType) + and dtype.numpy_dtype in list(vec.types.values())) def vector_dtype(self, base, count): return NumpyType(vec.types[base.numpy_dtype, count]) diff --git a/loopy/target/opencl.py b/loopy/target/opencl.py index db53b7cb29224f8620bcc6466b3f42da5a52107f..1d60f4c8fc7420f88c01825c81e4d3b4664cc7f9 100644 --- a/loopy/target/opencl.py +++ b/loopy/target/opencl.py @@ -243,7 +243,8 @@ class OpenCLTarget(CTarget): return result def is_vector_dtype(self, dtype): - return dtype.numpy_dtype in list(vec.types.values()) + return (isinstance(dtype, NumpyType) + and dtype.numpy_dtype in list(vec.types.values())) def vector_dtype(self, base, count): return NumpyType(vec.types[base.numpy_dtype, count]) diff --git a/loopy/target/pyopencl.py b/loopy/target/pyopencl.py index e14a1dd9d5d74bdabc30e8f70382738d4db4bbbe..e17f9515ad8528244ab585bb3826ae8a473c4b78 100644 --- a/loopy/target/pyopencl.py +++ b/loopy/target/pyopencl.py @@ -296,7 +296,8 @@ class PyOpenCLTarget(OpenCLTarget): def is_vector_dtype(self, dtype): from pyopencl.array import vec - return dtype in list(vec.types.values()) + return (isinstance(dtype, NumpyType) + and dtype.numpy_dtype in list(vec.types.values())) def vector_dtype(self, base, count): from pyopencl.array import vec