我知道这听起来很奇怪,但我注意到通过在我的内核声明之前添加一个空行,私有内存使用量从 72 字节下降到 36 字节。
我的内核是:
__kernel void multby2(__global float* data, __global float* results) {
size_t id = get_global_id(0);
results[id] = data[id] * 2;
}
请注意,第一行是空白的。根据第一行是否为空白,使用clGetKernelWorkGroupInfo
for查询会返回不同的结果。CL_KERNEL_PRIVATE_MEM_SIZE
这是正常的吗?还是 OpenCL 的 bug?
额外信息:内核是使用以下标志构建的:
-cl-finite-math-only -cl-opt-disable
关于我的系统:
platform name: Apple
platform vendor: Apple
platform version: OpenCL 1.2 (Apr 25 2013 18:32:06)
device name: GeForce 9400M
device vendor: NVIDIA
我很感激任何关于这个问题的评论!
更新:
感谢 DarkZeros 指出,如果内核是在没有优化的情况下构建的,可能会有未条带化的私有内存。删除标志-cl-opt-disable
似乎是解决方案。