Python OpenCL主机程序到cl程序的参数传递
嗨,我正在尝试使用python的OpenCL。我试图将数组和常量变量传递给cl程序,并将常量变量复制到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
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转换将Pythonint
转换为OpenCL系统所期望的正确的4字节表示形式。您可能希望编辑标题,以反映您的问题在于标量参数,而不是内核的数组参数。
event = prg.test( queue, (10,1), None, a_dev, np.int32(b))