From 671f84c3b7009b0a610e743ca64ca78420475243 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 20 Aug 2018 18:10:26 -0500
Subject: [PATCH] [pybind] Handle sized numpy scalar kernel arguments in pypy

---
 pyopencl/invoker.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/pyopencl/invoker.py b/pyopencl/invoker.py
index 7fad942c..b580c537 100644
--- a/pyopencl/invoker.py
+++ b/pyopencl/invoker.py
@@ -59,11 +59,14 @@ del _size_t_char
 def generate_buffer_arg_setter(gen, arg_idx, buf_var):
     from pytools.py_codegen import Indentation
 
-    if _CPY2:
+    if _CPY2 or _PYPY:
         # https://github.com/numpy/numpy/issues/5381
         gen("if isinstance({buf_var}, np.generic):".format(buf_var=buf_var))
         with Indentation(gen):
-            gen("{buf_var} = np.getbuffer({buf_var})".format(buf_var=buf_var))
+            if _PYPY:
+                gen("{buf_var} = np.asarray({buf_var})".format(buf_var=buf_var))
+            else:
+                gen("{buf_var} = np.getbuffer({buf_var})".format(buf_var=buf_var))
 
     gen("""
         self._set_arg_buf({arg_idx}, {buf_var})
@@ -349,7 +352,7 @@ def _generate_enqueue_and_set_args_module(function_name,
 
 
 invoker_cache = WriteOncePersistentDict(
-        "pyopencl-invoker-cache-v4",
+        "pyopencl-invoker-cache-v6",
         key_builder=_NumpyTypesKeyBuilder())
 
 
-- 
GitLab