5
当我例如设置我的的OpenCL工作组
- 工作组金额为5120和localsize会发生什么1
- 工作组于2560和localsize 2个
- 工作组,以640和localsize 4
这会如何影响我的工作量和资源访问量?
当我例如设置我的的OpenCL工作组
这会如何影响我的工作量和资源访问量?
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个线程来获得最佳性能。