我不太清楚CL_DEVICE_LOCAL_MEM_SIZE
的实际含义,通过clGetDeviceInfo
获得功能。这个值是表示某个设备上所有可用本地内存的总和,还是某个工作组的本地内存共享上限?
最佳答案
TL;DR:每个处理单元,因此也是分配给工作单元的最大值。
此值是设备中每个计算单元上可用的本地内存量。由于工作组被分配给单个计算单元,这也是任何工作组可以拥有的最大本地内存量。
出于许多 GPU 的性能原因,通常希望在每个计算单元上同时运行多个工作组(例如,为了隐藏内存访问延迟)。如果一个工作组使用了所有可用的本地内存,则设备将无法在完成之前将任何其他工作组调度到同一计算单元上。如果可能,建议限制每个工作组使用的本地内存量(例如总本地内存的四分之一),以允许多个工作组同时在同一计算单元上运行。
关于parallel-processing - CL_DEVICE_LOCAL_MEM_SIZE 是用于整个设备还是每个工作组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31197564/