gpu和mic是目前兩個流行的異構計算平台,二者在市場上的地位類似。如果當下有乙個fortran程式,是該選擇移植到gpu上還是mic上呢?
個人推薦:gpu要優於mic。
首先,我們來看下gpu和mic的單機linpack結果:
儲存到相簿
linpack of gpu and mic
2016-12-19 15:35 上傳
該測試的gpu為k40m,mic為31s1p(天河2號專用卡)
從這個測試結果上看,mic的linpack測試效能似乎略勝於gpu。
其次,從編譯器的軟體環境來看,cuda fortran的編譯器為pgi,mic的編譯器為intel fortran,兩款編譯器對於fortran語言標準的支援有細微差別,
從移植的角度來說,如果原來的程式是用的intel的,移植選擇intel的編譯器可能要少些麻煩。除此以外,intel的編譯器是免費的,pgi是收費的,而且
費用還不低,如果單買pgi的fortran,需要5000rmb,同時購買pgi c和fortran,估計**約為1萬rmb。幸運的是,pgi推出了社群版本,可以免費試用1年。
從支援的庫來看,mic支援intel的mkl,而在gpu上的fortran庫只有cula,且cula目前停止更新。當然可以通過fortran呼叫c的方式來呼叫其他的c
版本的庫,前提是pgi最好連c版本一起買了。
從使用的難易程度來看,mic的介面很容易,形似openmp,fortran使用gpu的方式有兩種,一種cuda fortran,一種openacc。如果希望能深層次的
優化的話,cuda fortran更好一些。代價就是,增加了移植的難度。
從debug的角度來說,cuda有支援的圖形化介面nvvp和命令列nvprof,而對於mic來說,debug則顯得不方便,因為介面封裝的比較完美,底層不易觸及。
最後,我闡述下個人使用gpu和mic的感受,對於gpu來說,固然有編寫**和優化的難題,但是,其效果是明顯和可預期的,只要並行度高的程式總能
有加速比。而mic表面上使用簡單,但真到用起來了也是「誰用誰知道」,簡單概況有兩大坑:第一,介面的坑。明明乙個很簡單的類似openmp的介面語句,
就是給你報錯,報的莫名其妙,而且debug起來也是頭疼不已。第二,效能的坑。linpack測試的結果很喜人,實際用起來就不咋地,有時候不一定加速,甚至
減速也是有可能的。
總之,gpu目前來說更成熟更穩定,mic的發展要晚於gpu,缺陷較多。希望對疑惑於選擇gpu還是mic的同學們有些幫助。
原文發布時間為: 2016-12-19 16:07:45
該選國企,外企還是私企?
畢業後,我首先進的是一家電氣傳動行業內的知名國企,待了大概四年,期間可以說接觸到了很多專業內的知識和產品,從供配電,到電機傳動,到變頻器,感測器,plc,電源,單板,嵌入式等,因為性質決定了一般國企,合同明寫的工資待遇不是很高,同時關係比較複雜一些,子弟裙帶關係比較明顯,但是對於我們一般剛畢業的學生...
選特化還是過載
乙個函式模板即有特化版又有過載版,編譯器會選哪個?以下 來自 為什麼不要特化函式模版 的例3 1 include iostream 23 using namespace std 45 template class t 6void f t 710 11template 12void f int 131...
資料先傳入CPU還是GPU
前幾天開週會的時候,乙個小夥伴提到讀入資料,稱一般的做法是 先把dataset讀到cpu上,然後gpu唯讀每個batch的資料,這樣gpu就不會報記憶體不足了。我一聽,說的有道理啊,但是仔細一想我平時好像不是這樣做的。硬體條件不同造成的。小夥伴學校的硬體資源只擁有一塊gpu,所以他要保證不能因為他乙...