2013-03-09 86 views
5

當我例如設置我的的OpenCL工作組

  1. 工作組金額爲5120和localsize會發生什麼1
  2. 工作組於2560和localsize 2個
  3. 工作組,以640和localsize 4

這會如何影響我的工作量和資源訪問量?

回答

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將查看全局工作大小併除以本地工作大小來確定您的線程安排。

現在(這是一般建議,有可能是你需要做的情況下,但現在..)

  1. 是一個可怕的想法。顯然。通過每次給它1個線程來浪費你的處理器時間。雖然這可能不是CPU的世界末日,但它適用於現代GPU。爲什麼?因爲GPU上的每個處理器都有多個內核。所有準備好行動。在這種情況下,只有其中一個起作用。另外如果需要,你無法同步線程。

  2. 同樣的事情。

  3. 同樣的事情。

如果我沒記錯的話,NVIDIA建議組中至少有32個線程來獲得最佳性能。