根据文档,kernal_name函数需要3个API参数:
program.kernel_name(queue, shape, None, kernal-params...)但是没有记录None和shape参数的用途。据我所知,第三个参数是内核函数本身,可以是None,但是第二个参数shape用于什么呢?
发布于 2018-05-16 14:28:28
根据"OpenCL in Action“一书,参数如下:
内核函数是根据代码中称为kernel_name的名称选择的。例如,如果您有一个名为"__kernel void (.)“的内核函数,那么只需调用program.foo(.)在Python里。global_size指定使用多少工作项,本地大小指定工作组的大小。内核参数按照它们在内核函数中出现的顺序传递,该函数由*args表示。
下面是上述书中的一个例子:program.mult(queue, (25,), (25,), scalar, float_buffer, lm)。从程序中创建名为"mult“的内核,将全局和局部大小设置为25,即它是一个一维任务,并将参数标量(类型为numpy.float32)、float_buffer (类型为cl.Buffer)和lm (类型为cl.LocalMemory)传递给内核。相应的内核是:__kernel void mult(float num, __global float *global_floats, __local float4 *local_floats) {...}
当然,您也可以按照纯C语言的方式来做,这需要更多的输入,但好处是非常清楚地看到了发生了什么:
https://stackoverflow.com/questions/50373192
复制相似问题