在我的 C OpenCL 代码中,我clSetKernelArg
用来创建__local
用于我的内核的“可变大小”内存,这在 OpenCL 本身中不可用。看我的例子:
clSetKernelArg(clKernel, ArgCounter++, sizeof(cl_mem), (void *)&d_B);
...
clSetKernelArg(clKernel, ArgCounter++, sizeof(float)*block_size*block_size, NULL);
...
kernel="
matrixMul(__global float* C,
...
__local float* A_temp,
...
)"
{...
我现在的问题是,如何在 pyopencl 中做同样的事情?
我查看了 pyopencl 附带的示例,但我唯一能找到的是一种使用模板的方法,在我看来,这似乎是一种矫枉过正的做法。见例子。
kernel = """
__kernel void matrixMul(__global float* C,...){
...
__local float A_temp[ %(mem_size) ];
...
}
你有什么建议吗?