2014-09-02 67 views
4

既然我們擁有像CUDA和OpenCL這樣的語言的GPGPU,那麼多媒體SIMD擴展(SSE/AVX/NEON)仍然有用嗎?如果我們有GPGPU,爲什麼要使用SIMD?

我最近閱讀了一篇關於如何使用SSE指令來加速排序網絡的文章。我認爲這非常簡潔,但是當我告訴我的COMP教授時,他笑了,並說在GPU上運行類似的代碼會破壞SIMD版本。我不懷疑這一點,因爲SSE非常簡單,GPU是大型高度複雜的加速器,具有更多的並行性,但它讓我想到了,在多種情況下,多媒體SIMD擴展比使用GPU更有用嗎?

如果GPGPU使SIMD冗餘,爲什麼英特爾會增加對SIMD的支持? SSE是128位,現在是AVX的256位,明年是512位。如果GPGPU更好地處理具有數據並行性的代碼,爲什麼英特爾推出這些SIMD擴展?他們可能能夠將等效資源(研究和區域)放入更大的緩存和分支預測器中,從而提高串行性能。

爲什麼要用SIMD代替GPGPU?

+1

FWIW,Intel似乎有意將SIMD大小增加到與GPU寬度相同(甚至更長)的程度。即合併CPU和GPU。 – Mysticial 2014-09-02 19:21:15

+0

@Mysticial啊是的?你有一些我可以讀的參考嗎? – jonfrazen1 2014-09-02 19:30:43

+0

英特爾的OpenCL實施使用SSE和AVX進行優化,實際上提供了相當不錯的加速(在他們的CPU上不是Xeon Phi)。 SIMD/AVX/NEON不會去任何地方,但會漂移到背景中。他們可能會爲各種前端(比如OpenCL)進行繁重的工作。 – 2014-09-02 19:49:07

回答

6

絕對SIMD仍然相關。首先,SIMD可以更輕鬆地與標量代碼進行交互操作,因爲它可以直接讀取和寫入相同的內存,而GPU需要數據在被訪問之前上傳到GPU內存。例如,通過SIMD向memcmp()等函數進行矢量化很簡單,但通過將數據上傳到GPU並在其中運行來實現memcmp()將是荒謬的。延遲將是粉碎。其次,SIMD和GPU在高分辨率代碼上都不好,但SIMD稍微差一些。這是由於GPU在單個指令調度程序下將多個線程(一個「warp」)分組的事實。那麼當線程需要採取不同的路徑時會發生什麼:在一個線程中採用if分支,在另一個線程中採用else分支?這被稱爲「分支分支」,它很慢:所有「if」線程在「else」線程等待時執行,然後在「if」線程等待時執行「else」線程。 CPU核心當然沒有這個限制。

結果是,SIMD更適合於所謂的「中等工作負載:」工作負載高達中等大小,具有一些數據並行性,一些不可預測的訪問模式,以及一些分支。對於具有可預測的執行流程和訪問模式的非常大的工作負載,GPU更好。

(還有一些外圍的原因,如雙精度浮點中的CPU更好的支持。)

+0

謝謝你的見解。關於將數據「上傳」到GPU的觀點。看起來AMD的加速處理單元將一種GPGPU集成在與CPU內核相同的芯片上。我不確定細節,但我認爲他們共享L2或L3緩存。你認爲這個論點也適用於這樣的設備嗎? – jonfrazen1 2014-09-02 19:27:20

+0

您提出了CUDA/OpenCL中的分支分歧,並說「CPU核心」沒有此限制。這是一個不公平的陳述。首先SIMD指令按內核運行。您可以簡單地在SIMD代碼中不包含if/else語句。您必須解開數據並分別進行操作,與您提到的分支分歧相比,這可能是糟糕的或更糟糕的。 – 2014-09-02 19:43:11

+0

我的意思是要求提出類似的問題。我認爲GPU基本上是寬度很大的SIMD器件,有很多慢「內核」? SIMT不是真正的軟件,而不是硬件。我的意思是每個「胎面」似乎不同,但它使用SIMD,而SIMD單元中的每個其他線程必須等待其他線程。我在AVX上使用'mm256_movemask_epi8'做類似的事情。 – 2014-09-02 20:13:04

0

GPU具有可控的專用高速緩存,CPU有更好的分支。除此之外,計算性能依賴於SIMD寬度,整數核心密度和指令級並行性。

另一個重要的參數是數據到CPU或GPU的距離。 (您的數據可能是一個獨立GPU中的opengl緩衝區,您可能需要在使用CPU進行計算之前將其下載到RAM,當主機緩衝區位於RAM中並需要在獨立GPU上計算時可以看到相同效果)

+0

那麼,在排序的例子中,我認爲這可能是有用的,如果排序後的數組由CPU使用。但是我的教授認爲最好把它交給GPU並把它歸類。他的研究是與GPGPU的東西,所以我認爲他有偏見,但仍然...我有我的懷疑。 – jonfrazen1 2014-09-02 19:42:08

+0

要排序的數組長度是多少?排序的複雜程度是多少? – 2014-09-02 19:45:05

相關問題