Opencl 确定实际最大本地内存

Opencl 确定实际最大本地内存,opencl,Opencl,生成具有编译时定义大小的本地内存的内核时,如 __local float2 block[%d]; 如何确定运行内核时实际可用的大小 这不是CL_DEVICE_LOCAL_MEM_SIZE,当我使用它时,我会收到一条错误消息,告诉我最大允许量,它总是小于报告的值(另外:不是2的幂,它会减去内核使用的寄存器吗?) 目前我只是使用了报告大小的一半…我无法确认这一点。为了验证这一点,我创建了一个确定每个设备的最大本地内存的小程序,并创建了一个分配该容量的内核。除非我将数量至少增加一个字节,否则程序将成

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

__local float2 block[%d];
如何确定运行内核时实际可用的大小

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

目前我只是使用了报告大小的一半…

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

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