2016-07-15 83 views
2

工作項和流處理器(cuda core)之間的關係如何。我在某處讀到工作項目的數量應該大大超過核心數量,否則就沒有性能改進。但爲什麼這樣呢?我認爲1核心代表1個工作項目。有人能幫助我理解這一點嗎? 謝謝Opencl Workitems和流處理器

回答

0

原因主要是調度 - 單個內核/處理器/單元通常可以運行多個線程並在它們之間切換以隱藏內存延遲(SMT)。因此,每個內核通常都有一個好主意,讓它有多個線程排隊等待。

線程通常會對應至少一個工作項,儘管取決於驅動程序和硬件,多個工作項可能會合併爲一個線程,以利用內核的SIMD /向量功能。

1

GPU和大多數其他硬件往往比他們可以訪問大多數可用內存的速度快得多。有更多的工作項目比你有處理器讓調度程序錯開內存使用,而那些已經讀取其數據的工作項目正在使用ALU硬件來處理。

Here is a good page about optimization in opencl.向下滾動到「 2.4。去除'代價高昂'的全局GPU內存訪問」,它進入了這個概念。