CL_DEVICE_LOCAL_MEM_SIZE是整个设备还是每个工作组?

时间:2015-07-03 02:34:00

标签: parallel-processing opencl gpgpu

我不太清楚CL_DEVICE_LOCAL_MEM_SIZE的实际含义,它是通过clGetDeviceInfo函数获得的。此值是否表示某个设备上所有可用本地内存的总和,或本地内存共享到工作组的上限?

1 个答案:

答案 0 :(得分:7)

TL; DR:每个处理单元,因此也是分配给工作单位的最大值。

此值是设备中每个计算单元上可用的本地内存量。由于工作组被分配给单个计算单元,因此这也是任何工作组可以拥有的最大本地内存量。

出于性能原因,许多GPU通常需要同时在每个计算单元上运行多个工作组(例如,隐藏内存访问延迟)。如果一个工作组使用所有可用的本地内存,则设备将无法将任何其他工作组安排到同一计算单元上,直到完成为止。如果可能,建议限制每个工作组使用的本地内存量(例如,占本地内存总量的四分之一),以允许多个工作组同时在同一计算单元上运行。