AMD 超級計算專用卡完整演義
如果以時間來計算的話,基于 GPU 來實(shí)現(xiàn)通用計算的口號喊出來到現(xiàn)在應(yīng)該有 10 個年頭,不過真正熱絡(luò)起來應(yīng)該從 DX10 世代 GPU 開始算起。
在 DX9 世代的 R580 GPU 時期,AMD 嘗試引入名為 Close To Metal(簡稱 CTM)的軟件開發(fā)界面,讓開發(fā)人員得以實(shí)現(xiàn) GPGPU(GPU 通用計算)開發(fā)能力。
Close To Metal 直譯就是靠近芯片金屬層的意思,在這里就是指這個開發(fā)界面是一個底層開發(fā)界面,開發(fā)人員可以籍此使用 R580 等 AMD GPU 的本機(jī)指令集以及內(nèi)存訪問。
不過因?yàn)楫?dāng)時 AMD 在新品(R600)上的不力以及開發(fā)難度等因素,這個開發(fā)界面的主要作用只是為接下來的新開發(fā)包鋪路和讓第三方開發(fā)人員取得一些 GPGPU 上的經(jīng)驗(yàn),當(dāng)年的 CTM 現(xiàn)在已經(jīng)以 GPU 指令集架構(gòu)文檔的形式公開提供。每代 AMD GPU 微架構(gòu)發(fā)布后,開發(fā)人員都能在不久后就下載到相應(yīng)的文檔,比主要的獨(dú)立顯卡競爭對手大方許多。
在 2006 年到 2012 年期間,AMD 發(fā)布了四代型號為 FireStream 的 GPU 超算專用卡:
FireStream R580/2U 屬于 DX9 世代的產(chǎn)品,缺乏雙精度計算能力,從 GPGPU 的角度而言,所謂的***代自然是屬于試探性的產(chǎn)品。
接下來的三代 FireStream 都是基于名為 TeraScale 的微架構(gòu),特點(diǎn)流處理器采用了 VLIW ALU 組成方式,按照世代劃分的話,有三代 TeraScale 微架構(gòu),即 TeraScale1、TeraScale2、TeraScale3,其中前兩代是 VLIW5,而 TeraScale3 是 VLIW4。
VLIW 架構(gòu)的特點(diǎn)是計算密度比較高,非常適合于圖形渲染,但是對軟件開發(fā)的要求比較高,而且容易出現(xiàn)相依性問題導(dǎo)致的計算資源閑置問題。從通用計算的角度而言,TeraScale 微架構(gòu)并不十分友好。
到了 2012 年,AMD 認(rèn)為,從產(chǎn)品線的角度而言,F(xiàn)ireStream 和 FirePro 存在較大的重疊,因此在這一年開始,F(xiàn)ireStream 被并入到 FirePro 中。
也是從 2012 年起,AMD 在異架構(gòu)計算方面開始真正漸入佳境,因?yàn)樵谶@一年 AMD 正式推出名為 Graphics Core Next(簡稱 GCN)的新一代 GPU 微架構(gòu)。
GCN 采用了 SIMD16 的 ALU 組合方式,顯著改善了通用計算方面的效率問題。
假定我們有 A 到 O 共計 15 個 wavefront(在 AMD GPU 中硬件調(diào)度器的最小調(diào)度單位,這個單位大小是和硬件相關(guān)的,目前 AMD GPU 的 wavefront 由 64 個在 OpenCL 中定義為 work-item 的“thread(線程)”組成;在 NVIDIA CUDA 中稱作 warp,目前 NVIDIA CUDA 中的 warp 都是 32 個 work-item 組成。據(jù)我所知,wavefront 和 warp 在 OpenCL 中沒有完全對應(yīng)的術(shù)語,不過有時候?yàn)榱朔奖?,可以稱作 sub-workgroup)組成的隊(duì)列,其中有若干個 wavefront 存在相依性。
例如這里面的 wavefront C 需要 wavefront B 的計算結(jié)果才能正確執(zhí)行,因此這兩個 wavefront 是不應(yīng)該并行執(zhí)行。
在采用 VLIW4 ALU 組合的 TeraScale3 或者說 RADEON HD 6900 上執(zhí)行上面的隊(duì)列就會發(fā)生下面的情況(紅色方塊表示 SP 中閑置的個別 VLIW 計算單元):
從上面的示意圖可以看到,在出現(xiàn)相依性的時候,VLIW 形式的 ALU 比較容易出現(xiàn)計算資源閑置的情況。而在 AMD 從 2012 年引入的 GCN 上情況就有較大的改善:
正如你所看到的,GCN 的計算資源利用率有顯著的改善,原本需要 6 個周期跑的隊(duì)列,現(xiàn)在只需要 4 個周期就行了,按照 AMD 的說法,GCN 1.0 的計算資源利用率***可以達(dá)到 TeraScale3 的 7.5 倍。
當(dāng)然,造成計算資源閑置的原因其實(shí)很復(fù)雜,例如分支,不過即使這樣,GCN 在這些問題上的處理還是要比 TeraScale 更好。
從 2012 年到現(xiàn)在 2015 年,GCN 作為微架構(gòu)也在不斷地更新。例如 2012 年的 GCN 版本就是 1.0(Tahiti),而后的有 1.1(Hawaii),***的則是 1.2(Tonga)。
在 GCN 之前,AMD 奉行的產(chǎn)品規(guī)劃是 sweet spot 戰(zhàn)略,也就是管芯大小控制在 300 mm^2 的水平,原因是當(dāng)時 AMD 主打的還是游戲玩家為主的市場,但是到了 GCN 尤其是 GCN 1.1 以后,這樣的策略已經(jīng)有明顯的變化,管芯面積更大(438 mm^2)的 Hawaii 出現(xiàn)在了旗艦產(chǎn)品線上。這是因?yàn)?GPU 計算市場已經(jīng)被證明是存在而且發(fā)展趨勢良好,因此做針對高性能計算的大芯片 GPU 是有客戶需求基礎(chǔ)的。
目前 AMD 基于 Hawaii GPU 的 FirePro 產(chǎn)品有三款:
其中的 AMD FirePro S9150 是專門針對超算服務(wù)器市場而推出的,在 2014 年年末評選的綠色超級計算機(jī) 500 強(qiáng)里,基于 AMD FirePro S9150 的 GSI L-CSC 集群拿下了年度***名的成績,每瓦雙精度實(shí)測(High Performance Linpack)性能***實(shí)現(xiàn)了超過 5 GFLOPS。
新近上市的 AMD FirePro W7100 采用了 GCN 1.2 版微架構(gòu),其中的賣點(diǎn)之一是視頻處理能力增強(qiáng)以及單槽 8 GiB 內(nèi)存,如果應(yīng)用涉及視頻處理的話,AMD FirePro W7100 是***的選擇。
由于選擇了開放標(biāo)準(zhǔn)作為主打的開發(fā)環(huán)境,AMD 現(xiàn)在的合作伙伴數(shù)量正在不斷擴(kuò)大中,例如編譯器廠商 PathScale 就和 AMD 在 OpenMP 4.0 方面有密切的合作,PathScale 甚至正協(xié)助 AMD 開發(fā) Linux 下的開源驅(qū)動,籍此進(jìn)一步改善 AMD GPU/APU 的計算性能。
根據(jù)***的統(tǒng)計,包括像 Adobe、Autodesk、達(dá)索系統(tǒng)等世界***企業(yè)已經(jīng)將 OpenCL 應(yīng)用到旗下的實(shí)際產(chǎn)品中,開發(fā)工具方面也涌現(xiàn)了 OpenCV(可視化庫)、Bolt(C++ 模板庫)、clMath(數(shù)學(xué)庫)、Ararapi(Java 7 OpenCL 加速)等豐富的開源庫,大量培訓(xùn)機(jī)構(gòu)也開啟了 OpenCL 的課程,整個 OpenCL 陣營已經(jīng)***的壯大。
毫無疑問的是,現(xiàn)在 GPU 通用計算的市場已經(jīng)全面開啟,AMD、NVIDIA、Intel 根據(jù)各自市場定位推出了性能、特點(diǎn)各異的產(chǎn)品,其中 AMD 主打的是性能/耗電比以及 OpenCL 開發(fā)生態(tài)環(huán)境,具備強(qiáng)勁的單 GPU 雙精度性能和合理的電力要求,而兩點(diǎn)對用戶來說意味著可以有更多的資源來獲得更強(qiáng)大的性能或者較低的使用成本,預(yù)期未來也將在此基礎(chǔ)上在內(nèi)存帶寬、內(nèi)存容量、通用計算特性上有更多的提升。