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個線程來獲得最佳性能。