我google了一下,但現在還不清楚一些用CUDA編程的GPU是否可以利用,或者可以使用類似於SSE SIMD擴展的指令;例如我們是否能夠以雙精度總結兩個浮點向量,每個向量具有4個值。如果是這樣的話,我想知道對於vector的前4個值使用更輕的線程還是使用SIMD更好。CUDA可以使用SIMD擴展嗎?
回答
CUDA程序編譯爲PTX instruction set。該指令集不包含SIMD指令。所以,CUDA程序不能明確使用SIMD。
但是,CUDA的整體思路是在大範圍內進行SIMD。單線程是warp組的一部分,每個線程都執行完全相同的指令序列(儘管某些線程可能會抑制某些指令,給出不同執行序列的錯覺)。 NVidia稱之爲單指令多線程(SIMT),但它本質上是SIMD。
PTX 3.0增加了對有限的SIMD-in-a-word指令的支持,該指令可以在寄存器內對8位和16位數據進行操作。這些說明詳見最新PTX規範的第178-182頁:http://docs.nvidia.com/cuda/pdf/ptx_isa_3.1.pdf使用這些SIMD指令需要具有計算能力3.x的GPU。已註冊的CUDA開發人員可以下載帶有封裝功能的頭文件(其中還提供了sm_1x和sm_2x GPU的仿真路徑),如下所示:https://devtalk.nvidia.com/default/topic/535684/announcements/release-1- 1-simd-in-a-word-functions-posted/ – njuffa 2013-06-24 23:47:36
@njuffa:聽起來像是答案,而不是評論!發佈它,我們可以說服流程改變他的接受。 – 2013-06-25 09:14:50
正如a comment中提到的其中一個答覆,NVIDIA GPU有一些SIMD指令。它們以每字節和每半字爲基礎在unsigned int
上運行。自2015年7月,有下列操作several flavours:
- 絕對值
- 加法/減法
- 計算平均值
- 比較
- 最大/最小
- 否定
- 絕對差額之和
- 1. 如何使用擴展數組做SIMD?
- 2. RestEasy可以擴展@Path嗎?
- 3. firefox擴展可以啓用/禁用其他擴展工作嗎?
- 4. 我可以用C++擴展lisp嗎?
- 5. 我可以切換擴展器的可擴展性嗎?
- 6. 可以在cuda中使用libsvm嗎?
- 7. SWIG Lua:使用%native擴展(%擴展)類。可以添加%native方法嗎?
- 8. 擴展方法可以修改擴展類的值嗎?
- 9. 當擴展B安裝時,chrome.management.onInstalled.addListener警報擴展A可以嗎?
- 10. 我可以使用UIDocumentationInteractionController顯示應用程序擴展嗎?
- 11. 我可以使用擴展應用程序的兩個類嗎?
- 12. 我們可以使用javascript調用iOS8擴展嗎?
- 13. 在Javascript中,您可以擴展DOM嗎?
- 14. 可以擴展AR關係嗎?
- 15. Safari擴展可以保存Cookie嗎?
- 16. Chrome擴展可以相互溝通嗎?
- 17. 我可以在UIViewController中擴展viewWillAppear嗎?
- 18. 我可以擴展Overlay類嗎?
- 19. 擴展新舊風格類可以嗎?
- 20. 可以在Typescript中擴展類型嗎?
- 21. 我可以擴展php類型嗎?
- 22. 我可以在SMLNJ中擴展typedef嗎?
- 23. 可以Prototype擴展SVG元素嗎?
- 24. C#我可以從EntityFramework擴展IdentityMessage嗎?
- 25. 我可以修改或擴展ChartJS嗎?
- 26. Scala類可以擴展多個類嗎?
- 27. 完全可以擴展System.Delegate嗎?
- 28. 使用SIMD指令可以進行3x3矩陣求逆嗎?
- 29. CUDA可以做argmax嗎?
- 30. 是否可以使用擴展方法擴展泛型類?
SSE是CPU的特性,而不是GPU的特性。我想你的意思是,如果有CUDA驅動程序在CPU上使用SSE指令而不是顯卡(GPU)? – 2011-03-08 21:51:35
沒有。我不太瞭解GPU硬件。我只是想知道SIMD指令是否可以在GPU上的CUDA線程上使用 – flow 2011-03-08 22:11:22