例如,当我设置我的金额时会发生什么
- 工作组到 5120 和 localsize 1
- 工作组到 2560 和 localsize 2
- 工作组到 640 和 localsize 4
这对我的工作项目数量和对资源的访问有何影响?
例如,当我设置我的金额时会发生什么
这对我的工作项目数量和对资源的访问有何影响?
5120 threads. 5120 groups. 1 thread per group
. 每个组(1 个线程)将占用一个处理器。您不能同步它们中的任何一个(在传统意义上)。2560 threads. 1280 groups. 2 threads in each group
. 每个组(2 个线程)将占用一个处理器。您可以同步这两个线程(在传统意义上)。640 threads. 160 groups. 4 threads in each group
. 每个组(4 个线程)将占用一个处理器。您可以同步这四个线程(在传统意义上)。在 OpenCL 中,您需要根据线程总数来表示全局工作大小。底层 OpenCL API 将查看全局 Work Size 并除以本地 Work Size 以计算出您的线程安排。
现在(这是一个一般性建议。可能在某些情况下您需要这样做,但现在..)
是一个可怕的想法。清楚地。一次给它 1 个线程是在浪费处理器时间。虽然这可能不是 CPU 的世界末日,但它是现代 GPU 的世界末日。为什么?因为你的 GPU 上的每个处理器都会有多个内核。一切准备就绪。在这种情况下,只有其中一个有效。另外,如果需要,您无法同步线程。
一样。
一样。
如果我没记错的话,NVIDIA 建议在一组中至少使用 32 个线程以获得最佳性能。