CPU會被GPU替代嗎?SIMD和SIMT誰更好?

近日朋友問我SIMD(單指令多數據流,Single Instruction Multiple Data)的問題,進而引申出一個有趣的問題,CPU會被GPU替代嗎?或者GPU會被CPU替代嗎?我相信本專欄的大部分讀者都會得出這樣的結論:近期內不會。兩者的差距是巨大的:

CPU為了通用和低延遲做了更多優化,從而運行核心比較少。GPU為了高並發、高流水犧牲了通用性和延遲,它的內核數目動輒數百:

兩者似乎生活在不同的維度,也在相當長的時間內井水不犯河水,過著相安無事的日子。平靜的表面下暗流涌動,在兩者交叉的地方明爭暗鬥從來都沒有停止。CPU加入更多的SIMD的指令,而NVIDIA在提出SIMT的CUDA模型後,也試圖不斷矮化和侵蝕CPU的固有領土。兩者的交鋒隨著大熱的人工智慧而愈演愈烈。顯然CPU並不適合人工智慧的大規模矢量運算,Intel從而轉向在Xoen Phi的MIC(眾核), FPGA和專用ASIC三個方向發動進攻,而目前N卡似乎毫無懼色,股票價格持續創出新高。

我不打算討論雙方甚至三分(加上Google)的口水仗。僅僅從技術角度開啟一個新的系列,我們希望通過討論如下幾點,來深入了解二者的不同,從而對晶元是如何設計的有更深的體察。

  1. 什麼是SIMD,什麼是SIMT,什麼是SMT?SIMD和SIMT是替代關係還是包容關係?
  2. SMIT的編程模型和SIMD有哪些不同?
  3. 多發射越多越好嗎?
  4. CPU的core和GPU的core設計有什麼不同?
  5. GPU有Cache和DRAM嗎?為什麼顯存是GDDRx,而是不一般的DDRx?

作為本系列的第一篇,我們通過數據來比較一下二者的歷史演化,以形成感性認識,也是我們將來討論問題的基礎。為了公平起見,不但比較N卡,也會加入A卡和Intel的至強Phi的內容。聲明:本文後面數據和圖片來自Karl Rupp的開源數據,見參考資料1。所加入水印為了防止盜文,並不代表擁有圖片版權,版權歸原作者。

性能

因為N卡對單精度和雙精度浮點數有不同的產品線,故兩者數據分開為兩個表:

可以看出N卡Tesla系列浮點運算效能比至強高出一個數量級,加上CUDA的SIMT編程模型效果很好,無怪乎Tensorflow等等最新的人工智慧引擎都對率先提供良好的支持,在我們先前的實驗中也得到了證實(Tensorflow 性能調優一:實驗),CNN時間縮短了35倍。

有趣的是A卡有一段時間領先,而Phi追趕速度很快。而人工智慧市場佔有率的巨大差距,個人認為是在於CUDA的原因。

功耗

性能差距巨大,但功耗差距也高達1倍。從圖中看出,至強系列功耗基本保持不變甚至下降,而N卡在快速上升後也優化的比較好,甚至比A卡還要低。

每瓦性能

性能和功耗都有差距,那麼每瓦性能是一個比較公平的比較,還是分單精度和雙精度:

每瓦性能上兩者差距減小不少,但還是N卡保持領先。

結論

N卡的Tesla系列無疑是非常優秀的,但要它替代CPU的通用計算可是它力所不能及的。兩者的AI晶元大戰才剛剛開始,nervana系列CPU的出現也許會是個遊戲改變者,讓我們拭目以待。

歡迎大家關注本專欄和用微信掃描下方二維碼加入微信公眾號"UEFIBlog",在那裡有最新的文章。同時歡迎大家給本專欄和公眾號投稿!

用微信掃描二維碼加入UEFIBlog公眾號

參考資料:

[1]: karlrupp/cpu-gpu-mic-comparison


推薦閱讀:

優雅地記錄Python程序日誌2:模塊組件化日誌記錄器
Mac上安裝xampp,無法獲取到htdocs目錄下的某些項目文件夾。
成為碼魔的三條路
C、C++語言學習資料
好書一起讀(186):編程的一點心得

TAG:中央处理器CPU | 图形处理器GPU | 编程 |