【发布时间】:2022-01-27 01:09:02
【问题描述】:
我正在学习 OpenCL 并使用 RTX 2060。
根据我在网上阅读的内容,此设备的最大工作项数为 1024,每个工作组的最大工作项数为 64(这意味着我可以运行 16 个工作组,每组 64 个工作项对吗?)
问题是:工作组本身的数量有限制吗?例如我可以运行 32 个工作组,32 个工作项吗? 16 个工作项的 64 个工作组? 2 个工作项的 512 个工作组? (你明白了)。
【问题讨论】:
标签: opencl
我正在学习 OpenCL 并使用 RTX 2060。
根据我在网上阅读的内容,此设备的最大工作项数为 1024,每个工作组的最大工作项数为 64(这意味着我可以运行 16 个工作组,每组 64 个工作项对吗?)
问题是:工作组本身的数量有限制吗?例如我可以运行 32 个工作组,32 个工作项吗? 16 个工作项的 64 个工作组? 2 个工作项的 512 个工作组? (你明白了)。
【问题讨论】:
标签: opencl
供应商只为工作组的最大大小指定一个值;对于 Nvidia,这通常是 1024。但是仍然允许(尽管不是很有用)选择更大的工作组大小。工作组越大,每个线程可以拥有的寄存器(private 变量)越少,如果使用太多(例如表中的数千个),它们会溢出到全局内存中,这会使事情变得非常缓慢。详情见here。
请注意,工作组大小应为 32 或 32 的倍数,以充分利用硬件。
工作组的数量没有限制。你只会最终耗尽内存。一般来说,工作组越多越好,因为这样设备就完全饱和了,任何时候都没有 SM 空闲。拥有 200 万个工作组(每个工作组有 32 个线程)并不罕见。
【讨论】: