【发布时间】:2015-04-16 08:41:51
【问题描述】:
OpenCL 当然是为了抽象出硬件实现的细节而设计的,因此在担心硬件如何配置方面过分深入可能是个坏主意。
话虽如此,我想知道对于任何特定内核来说,使用多少本地内存是有效的。例如,如果我有一个包含 64 个工作项的工作组,那么大概其中一个以上可能会同时在一个计算单元中运行。但是,CL_DEVICE_LOCAL_MEM_SIZE 查询返回的本地内存大小似乎适用于整个计算单元,而如果此信息适用于工作组,则它会更有用。如果它们在同一个计算单元上共存,有没有办法知道有多少工作组需要共享同一个内存池?
我曾认为确保我的工作组内存使用量低于本地总内存大小的四分之一是个好主意。这是不是太保守了?手动调音是唯一的方法吗?对我而言,这意味着您只针对一种 GPU 模型进行调整。
最后,我想知道整个本地内存大小是否可用于本地内存的用户分配,或者是否有其他系统开销使其更小?我听说如果你分配太多,那么数据只会放在全局内存中。有没有办法确定是否是这种情况?
【问题讨论】:
-
您正在使用哪些设备?另外,您使用的是什么 opencl 版本(1.0、1.1、1.2 或 2.0)?您是否想到了特定类型的内核?我认为没有一个经验法则对所有算法都是最佳的。
-
嗯,我正在 Radeon HD 6750M 上测试 CL 1.2,但我希望能更全面地了解。
标签: memory-management opencl gpgpu