5

例如,当我设置我的金额时会发生什么

  1. 工作组到 5120 和 localsize 1
  2. 工作组到 2560 和 localsize 2
  3. 工作组到 640 和 localsize 4

这对我的工作项目数量和对资源的访问有何影响?

4

1 回答 1

9
  1. 你会有5120 threads. 5120 groups. 1 thread per group. 每个组(1 个线程)将占用一个处理器。您不能同步它们中的任何一个(在传统意义上)。
  2. 你会有2560 threads. 1280 groups. 2 threads in each group. 每个组(2 个线程)将占用一个处理器。您可以同步这两个线程(在传统意义上)。
  3. 你会有640 threads. 160 groups. 4 threads in each group. 每个组(4 个线程)将占用一个处理器。您可以同步这四个线程(在传统意义上)。

在 OpenCL 中,您需要根据线程总数来表示全局工作大小。底层 OpenCL API 将查看全局 Work Size 并除以本地 Work Size 以计算出您的线程安排。

现在(这是一个一般性建议。可能在某些情况下您需要这样做,但现在..)

  1. 是一个可怕的想法。清楚地。一次给它 1 个线程是在浪费处理器时间。虽然这可能不是 CPU 的世界末日,但它是现代 GPU 的世界末日。为什么?因为你的 GPU 上的每个处理器都会有多个内核。一切准备就绪。在这种情况下,只有其中一个有效。另外,如果需要,您无法同步线程。

  2. 一样。

  3. 一样。

如果我没记错的话,NVIDIA 建议在一组中至少使用 32 个线程以获得最佳性能。

于 2013-03-09T20:58:31.850 回答