Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCL主机程序到cl程序的参数传递_Python_Opencl - Fatal编程技术网

Python OpenCL主机程序到cl程序的参数传递

Python OpenCL主机程序到cl程序的参数传递,python,opencl,Python,Opencl,嗨,我正在尝试使用python的OpenCL。我试图将数组和常量变量传递给cl程序,并将常量变量复制到cl设备上的数组中。这应该很简单,但我得到以下错误: Traceback (most recent call last): File "<pyshell#103>", line 1, in <module> test() File "D:/Programming/Programs_OpenCL_Python/Host_CL_Parameter_Passing.py", l

嗨,我正在尝试使用python的OpenCL。我试图将数组和常量变量传递给cl程序,并将常量变量复制到cl设备上的数组中。这应该很简单,但我得到以下错误:

Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
test()
File "D:/Programming/Programs_OpenCL_Python/Host_CL_Parameter_Passing.py", line 141,    in test
event = prg.test( queue, (10,1), None, a_dev, b)
File "C:\Python27\lib\site-packages\pyopencl-2012.1-py2.7-win32.egg\pyopencl\__init__.py", line 457, in kernel_call
self.set_args(*args)
File "C:\Python27\lib\site-packages\pyopencl-2012.1-py2.7-win32.egg\pyopencl\__init__.py", line 509, in kernel_set_args
% (i+1, str(e), advice))
LogicError: when processing argument #2 (1-based): Kernel.set_arg failed: invalid     value - invalid kernel argument
有人能告诉我这个问题并给我一个解决方案吗?这让我快发疯了。
谢谢

您需要将整数参数转换为numpy
int32
类型:

event = prg.test( queue, (10,1), None, a_dev, np.int32(b))

顺便说一句,我可以通过查看

了解到这一点,非常感谢。成功了。顺便说一下,我已经安装了32位python。默认int是否与numpy.int32()相同?不,python内置的
int
类型与numpy的
int32
数据类型不同。numpy转换将Python
int
转换为OpenCL系统所期望的正确的4字节表示形式。您可能希望编辑标题,以反映您的问题在于标量参数,而不是内核的数组参数。
event = prg.test( queue, (10,1), None, a_dev, np.int32(b))