從雲端加速技術看台灣高階人才培育問題#13:有待突破的效能瓶頸/洪士灝
上一篇講到深度學習的火熱,讓許多普羅大眾開始擁抱GPU技術;因為GPU的取得相對於FPGA容易,而且開發環境較為成熟。無論是NVIDIA或是AMD,都支援之前在第九篇所提到的OpenCL語言撰寫的程式,雖然NVIDIA對於自家的CUDA,支援還是比較積極。
GPU加速運算的瓶頸
高階的GPU,通常是連接在系統的PCI Express(PCIe)介面上,因此當CPU上的主程式需要GPU幫忙計算時,必須先透過PCIe,將存放在主機的記憶體或儲存裝置的資料,傳送到GPU的記憶體中。
而GPU計算出來的資料,也必須透過PCIe傳回主機。這是目前GPGPU在實際使用上,最大的效能瓶頸之一;如果採用目前最快的16通道PCIe 3.0介面,一張GPU卡只能以16GB/Sec的速度,與處理器交換資料。
GPU加速運算效能,目前還有兩大瓶頸:PCIe頻寛與記憶體容量。
市售用於伺服器的Intel Xeon E5–2600v4「Broadwell-EP」處理器,計算速度可達將近1 TFLOPS,也就是一秒鐘完成一兆次的浮點數計算。但是要達到極速,計算所需的資料必須擺在CPU內部,例如暫存器或快取之中;如果大多數的資料都擺在主機的記憶體的話,計算的極速就會受限於記憶體的頻寬。
以Intel E5–2699 v4處理器來說,其存取記憶體的頻寬是76.8 GB/s,而Intel最新的Xeon Phi 7290處理器的記憶體頻寬更高達115.2 GB/s,都遠高於上述16通道PCIe 3.0介面的16GB/s。
因此,如果要讓GPU來幫忙處理大數據(Big Data),計算數量與資料傳輸量的比率必須夠高才行,否則GPU反倒會扯CPU的後腿;好比請一個人在外國的助理幫忙處理資料,就算這位助理手腳再快,來回的溝通成本太高,也不見得好用。
另一個瓶頸是GPU卡上有限的記憶體容量,不見得放得下計算所需的所有資料。一般遊戲用的GPU卡,記憶體頂多8GB,對遊戲綽綽有餘,但是對於很多伺服器應用來說就顯得相當不夠。
尤其是資料庫應用,或是用Spark跑In-Memory Data Analytics,資料量遠大於8GB,因此要GPU幫忙處理資料會非常沒有效率。以深度學習為例,GPU記憶體容量不足以存放複雜的Deep Neural Network在進行平行訓練時所需的資料,也因此成為效能瓶頸。
解決問題:業界的合縱連橫
AMD幾年前號召一些公司,成立了Heterogeneous System Architecture Foundation(HSAF),提倡讓GPU和CPU共享主機上的記憶體,以解決上述的問題。AMD率先推出符合HSA規格的晶片,不過市場的接受度和後續的發展進度不如預期。
下圖是AMD在2015年公開的Datacenter產品研發路線圖,頗具野心,打算同時以三個路線進攻雲端伺服器市場,包括大量x86 CPU核心的Opteron、大量ARM CPU核心的晶片、以及HSA架構的高效能APU,每條路線看似都有道理。
AMD的產品研發路線圖。
我認為HSA的進度緩慢以及AMD營運不佳的問題都出在「多頭馬車」。HSAF拉了很多公司進來,但實際上最熱衷的還是AMD,其他的公司大半持觀望態度,貢獻不多。
AMD打算同時走三條路線的進攻模式,也導致研發資源的分散,反而造成各個產品線的競爭力不足,相當可惜。反觀AMD的競爭對手Intel和NVIDIA,都是步步為營,並不冒進。
為解決異質運算的效能瓶頸,各業者合縱連橫,相互較勁。
提倡共享記憶體的作法和業者,並是不只有HSA和AMD而已,請大家不要忘了IBM這個老字號。IBM這幾年帶頭推動Cache Coherent Interconnect (CCIX)、OpenCAPI、Gen-Z等聯盟,希望以「各種異質計算技術」和「大型高速叢集」進一步加速雲端應用。參與的公司不乏大咖,非常熱鬧。
對於IBM來說,無論是CPU、GPU還是FPGA、ASIC,只要能放進系統用來加速應用的,就是好技術。
同時IBM也不像Intel/NVIDIA/AMD這些公司那麼注重硬體部門的營收,因為IBM在近年來,已經將公司轉形成以高階服務為營收主力,如何提升人工智慧系統Watson的速度和能力,在各專業領域上更具競爭力,才是IBM關心的重點。
筆者認為異質計算還在快速演進之中,每個瓶頸的突破,都開啟了加速某些應用的契機;我們只要精通加速技術,就有機會打開通往未來之門。
吾輩何其有緣,能親眼目睹、親身參與這個人類有史以來科技文明發展、社會改變最快速的年代,實在三生有幸。
(未完、待續)