OpenCl工作组

时间:2013-03-09 16:01:33

标签: opencl

例如,当我设定

的金额时会发生什么
  1. 工作组到5120和localsize 1
  2. 工作组到2560和localsize 2
  3. 工作组到640和localsize 4
  4. 这对我的工作项和资源的访问量有何影响?

1 个答案:

答案 0 :(得分: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个线程)将采用一个处理器。您可以同步这四个线程(在传统意义上)。
  4. 在OpenCL中,您需要根据线程总数来表示全局工作大小。底层OpenCL API将查看全局工作大小并除以本地工作大小以确定您的线程安排。

    现在(这是一般性建议。可能有些情况需要你做,但现在......)

    1. 这是一个糟糕的主意。显然。您通过一次提供1个线程来浪费处理器时间。虽然这可能不是CPU的世界末日,但它适用于现代GPU。为什么?因为GPU上的每个处理器都有许多核心。一切都准备好了。在这种情况下,只有其中一个适用。如果需要,您无法同步线程。

    2. 同样的事情。

    3. 同样的事情。

    4. 如果我没记错的话,NVIDIA建议一组中至少有32个线程才能获得最佳性能。