既然我們擁有像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?
FWIW,Intel似乎有意將SIMD大小增加到與GPU寬度相同(甚至更長)的程度。即合併CPU和GPU。 – Mysticial 2014-09-02 19:21:15
@Mysticial啊是的?你有一些我可以讀的參考嗎? – jonfrazen1 2014-09-02 19:30:43
英特爾的OpenCL實施使用SSE和AVX進行優化,實際上提供了相當不錯的加速(在他們的CPU上不是Xeon Phi)。 SIMD/AVX/NEON不會去任何地方,但會漂移到背景中。他們可能會爲各種前端(比如OpenCL)進行繁重的工作。 – 2014-09-02 19:49:07