生成具有编译时定义大小的本地内存的内核,如
__local float2 block[%d];
如何确定运行内核时实际可用的大小?
这不是CL_DEVICE_LOCAL_MEM_SIZE,当我使用它时,我收到一条错误消息告诉我最大允许量,它总是小于报告的值(同样:不是2的幂,它是否减去了内核使用的寄存器? )。
目前,我只是使用报告尺寸的一半......
答案 0 :(得分:0)
我无法确认这一点。为了验证这一点,我创建了一个test program来确定每个设备的最大本地内存,并创建一个分配该数量的内核。除非我将数量增加至少一个字节,否则程序会成功执行。
也许你的问题在于float2
。这需要8个字节,如果将block
数组长度设置为最大本地内存大小,它将无法工作。