例如,当我设定
的金额时会发生什么这对我的工作项和资源的访问量有何影响?
答案 0 :(得分:9)
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将查看全局工作大小并除以本地工作大小以确定您的线程安排。
现在(这是一般性建议。可能有些情况需要你做,但现在......)
这是一个糟糕的主意。显然。您通过一次提供1个线程来浪费处理器时间。虽然这可能不是CPU的世界末日,但它适用于现代GPU。为什么?因为GPU上的每个处理器都有许多核心。一切都准备好了。在这种情况下,只有其中一个适用。如果需要,您无法同步线程。
同样的事情。
同样的事情。
如果我没记错的话,NVIDIA建议一组中至少有32个线程才能获得最佳性能。