确定实际的最大本地内存

时间:2013-01-15 12:18:02

标签: opencl

生成具有编译时定义大小的本地内存的内核,如

__local float2 block[%d];

如何确定运行内核时实际可用的大小?

这不是CL_DEVICE_LOCAL_MEM_SIZE,当我使用它时,我收到一条错误消息告诉我最大允许量,它总是小于报告的值(同样:不是2的幂,它是否减去了内核使用的寄存器? )。

目前,我只是使用报告尺寸的一半......

1 个答案:

答案 0 :(得分:0)

无法确认这一点。为了验证这一点,我创建了一个test program来确定每个设备的最大本地内存,并创建一个分配该数量的内核。除非我将数量增加至少一个字节,否则程序会成功执行。

也许你的问题在于float2。这需要8个字节,如果将block数组长度设置为最大本地内存大小,它将无法工作。