CUDA還能走多遠?

知乎上也有類似問題,但是都是幾年前的答案。經過幾年發展,現在再來看CUDA,它到底還有沒有競爭力


目前徒手寫 CUDA 代碼已經從自由競爭進入壟斷階段。

官方發布的 CUDA Toolkit 並不總是最高效的實現,而是存在一定認知「黑洞」,一般用戶無論如何優化CUDA C程序都無法逾越性能瓶頸。而官方發布的庫,從早期的CUBLAS,CUFFT到後來面向深度學習的CUDNN,都不是用CUDA C寫的,而是NVIDIA內部的編譯器完成的(這個是沒有公開的版本),這樣對NVIDIA好處顯而易見,既能賣硬體,又能在軟體上保持領先,增加用戶粘度。從用戶角度而言,使用高度封裝的庫可以降低開發、調試的門檻,直接調用C API就可以實現自己的演算法,無需了解CUDA C的設計細節。試想當你費盡心機寫了一個非常 ugly 的 CUDA 演算法準備向老闆彙報時,突然兩彈元勛宣布:cuXXX 庫發布了!性能 X10!你的老闆會相信誰?

你也不是完全沒有機會。

對於性能要求近乎苛刻的應用,需要利用PTX、SASS彙編指令進行深度優化。X86 平台上有很多商業和非商業的編譯器、彙編器、調試器,因此彙編級別優化相對容易,一段 CPU 代碼如果能充分利用 SSE、AVX 指令就能實現計算加速。而 GPU 平台硬體公開程度沒那麼高,NV 沒有提供更多硬體細節和相應的底層開發工具,為此自己需要開發一些 native assembler。

目前有開源的 asfermi (http://code.google.com/p/asfermi), maxas (NervanaSystems/maxas)。

阿里雲提供了 AsKepler 服務(登錄),已對內部大量使用的 K40 GPU 上的程序進行調優。

Pascal 架構的工具目前還沒有公開,值得各位極客和愛好者挖掘,也歡迎加入阿里雲高性能計算組一起來探索未知世界,我們不止有 GPU,還有 FPGA,還有 Phi……。

--------------------------------------

我們組的 AsKepler 在 GTC 2016 上有 presentation, 鏈接:http://on-demand.gputechconf.com/gtc/2016/presentation/s6173-zhe-jia-performance-kepler-gpus.pdf

為什麼要開發這個工具?為什麼不用 nvcc 完成相同的工作?相信搞過底層優化,尤其是 GPU 上 native assembly 優化的人,自然會懂。


最近優化網路流演算法,cuda代碼怎麼改都被NPP吊打到不知道哪裡去了……演算法和編譯器一起跪 @齊鵬


有競爭力,個人認為是錦上添花的競爭力!

NV這幾年發展很快,目前正在以深度學習為主來推銷自己的產品,比如cuDNN,而且從V1V2準備推V3。

但是!但是!但是大家也要看到,github上最快的並不是cuDNN。

雖然庫調用方便,等你需要改需求你就知道不掌握核心競爭力的蛋疼之處了。

所以,我建議還是自己主動學好這門技術,要知道NV寫的庫被頂刊頂會的paper吊打很久很久了!包括cuDNN!!!

匿了


另外一個答案說的蠻好的,Nvidia也學Intel搞些自己領先的軟體來保持粘性。(Intel的編譯器很好)

但是最近OpenCL的新標準也出來了,Vulkan也來了。這些開放標準對CUDA肯定是有壓力的,雖然OpenCL的生態不如CUDA,但是人家重點是支持的設備多,幾乎各大GPU都能用,而且OpenCL可以CPU和GPU同時計算。當然OpenCL手動編程的痛苦程度遠超CUDA,最後的性能也就那樣。

還可以看看最近大企業的招聘信息,特別是金融行業,為了降低大型計算機的成本,不少公司已經開始考慮用CUDA GPU取代大型機了。與此同時,就當然要找GPU程序員,而一般招的就是寫CUDA的。所以,前景有沒有?當然是大大的有!


cuda的性能杠杠的,前面提到的彙編碼在 cuda/doc下就有

但是寫入太坑了,隨機讀太坑了。


介於已經快被cuda逼瘋的狀況來說,他已經走不了多遠了(?`∧′)


推薦閱讀:

遊戲筆記本中哪款的顯示屏最好?
能否預計一下2018年pc硬體的價格走勢?
DOTA2FPS過低,真心求幫忙求解決?
簡易說明A卡和N卡的區別?
A卡與N卡,除去耗電這個梗,其他差別在哪?為啥我總感覺A卡的性能要比N卡好一點?

TAG:NVIDIA英偉達 | 顯卡 | CUDA |