賽靈思 All Programmable FPGA 和 SoC 針對(duì)一系列計(jì)算密集型工作負(fù)載提供最高效、最具成本效益、時(shí)延最低、最具設(shè)計(jì)靈活性并且滿足未來(lái)需求的計(jì)算平臺(tái)。
為了滿足不斷攀升的數(shù)據(jù)處理需求,未來(lái)系統(tǒng)需要在計(jì)算能力上大幅改進(jìn)。傳統(tǒng)解決方案(例如 x86 處理器)再也無(wú)法以高效、低成本的方式提供所需的計(jì)算帶寬,系統(tǒng)設(shè)計(jì)人員必須尋找新的計(jì)算平臺(tái)。FPGA 和 GPU 越來(lái)越多地被系統(tǒng)設(shè)計(jì)人員看好,認(rèn)為它們能夠滿足未來(lái)需求的計(jì)算平臺(tái)。為新時(shí)代提供必要的計(jì)算效率和靈活性,本文將對(duì) GPU 以及賽靈思 FPGA和 SoC 器件進(jìn)行分析。
簡(jiǎn)介
未來(lái)系統(tǒng)(例如云數(shù)據(jù)中心 [DC] 和自動(dòng)駕駛汽車(chē))需要在計(jì)算能力上大幅改進(jìn),以支持不斷增多的工作負(fù)載以及不斷演進(jìn)的底層算法 [ 參考資料 1]。例如,大數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、視覺(jué)處理、基因組以及高級(jí)駕駛員輔助系統(tǒng) (ADAS) 傳感器融合工作負(fù)載都在促使計(jì)算性能能以低成本、高效的方式實(shí)現(xiàn)提升,并且超出現(xiàn)有系統(tǒng)(例如 x86 系統(tǒng))的極限。
系統(tǒng)架構(gòu)師正在尋找能滿足要求的新計(jì)算平臺(tái)。該平臺(tái)需要足夠靈活,以便集成到現(xiàn)有的架構(gòu)中 , 并支持各種工作負(fù)載及其不斷演進(jìn)的算法。此外,這些系統(tǒng)很多還必須提供確定性的低時(shí)延性能,以支持實(shí)時(shí)系統(tǒng)(例如自動(dòng)駕駛汽車(chē))所需的快速響應(yīng)時(shí)間。
圖形處理單元 (GPU) 廠商非常積極地將 GPU 定位成新時(shí)代計(jì)算平臺(tái)的最佳之選,主要依據(jù)其在機(jī)器學(xué)習(xí)訓(xùn)練的高性能計(jì)算 (HPC) 領(lǐng)域取得的成功。在此過(guò)程中,GPU 廠商針對(duì)機(jī)器學(xué)習(xí)推斷工作負(fù)載修改了他們的架構(gòu)。
然而,GPU 廠商還是忽視了基本的 GPU 架構(gòu)的局限性。這些局限性會(huì)嚴(yán)重影響 GPU 以高效、低成本方式提供必要的系統(tǒng)級(jí)計(jì)算性能的能力。例如,在云端 DC 系統(tǒng)中,對(duì)工作負(fù)載的需求在一天內(nèi)會(huì)發(fā)生很大變化。此外,這些工作負(fù)載的底層算法也會(huì)發(fā)生快節(jié)奏變化。GPU 架構(gòu)的局限性會(huì)阻止很多今天的工作負(fù)載和明天形成的工作負(fù)載映射到 GPU,導(dǎo)致硬件閑置或低效。本白皮書(shū)的“GPU 架構(gòu)的局限性”部分對(duì)這些局限性進(jìn)行了更詳細(xì)介紹。
相反,賽靈思 FPGA 和 SoC 具有眾多關(guān)鍵屬性,使它們非常適合解決未來(lái)系統(tǒng)要求所提出的種種挑戰(zhàn)。
這些獨(dú)特屬性包括 :
? 針對(duì)所有數(shù)據(jù)類(lèi)型提供極高的計(jì)算能力和效率
? 具備極高靈活性,能夠針對(duì)多種工作負(fù)載將計(jì)算和效率優(yōu)勢(shì)最大化
? 具備 I/O 靈活性,能方便地集成到系統(tǒng)中并實(shí)現(xiàn)更高效率
? 具備大容量片上存儲(chǔ)器高速緩存,可提高效率并實(shí)現(xiàn)最低時(shí)延
本白皮書(shū)的“賽靈思 FPGA 和 SoC 的獨(dú)特優(yōu)勢(shì)”章節(jié)介紹了賽靈思架構(gòu)的優(yōu)勢(shì),并與 GPU 架構(gòu)及其局限性進(jìn)行對(duì)比。
GPU 起源和目標(biāo)工作負(fù)載
GPU 的起源要追溯到 PC 時(shí)代,英偉達(dá) (NVidia) 公司聲稱(chēng)在 1999 年推出世界首款 GPU,但有很多其他顯卡要先于該公司的出品 [ 參考資料 2]。GPU 是一款全新設(shè)計(jì)的產(chǎn)品,用來(lái)分擔(dān) / 加速圖形處理任務(wù),例如替 CPU 進(jìn)行像素陣列的陰影和轉(zhuǎn)換處理,其架構(gòu)非常適合高并行吞吐量處理 [ 參考資料 3]。本質(zhì)上,GPU 的主要作用是為視覺(jué)顯示器 (VDU) 渲染高質(zhì)量圖像。
多年來(lái),少量非圖形的大規(guī)模并行和存儲(chǔ)器相關(guān)工作負(fù)載是在 GPU(而非 CPU)上實(shí)現(xiàn)并且受益良多,例如需要大規(guī)模矩陣計(jì)算的醫(yī)療成像應(yīng)用。GPU 廠商意識(shí)到他們可以將 GPU 的市場(chǎng)延伸到非圖形應(yīng)用領(lǐng)域,并導(dǎo)致 GPU 的非圖形編程語(yǔ)言(諸如 OpenCL)應(yīng)運(yùn)而生。這些編程語(yǔ)言實(shí)際上是將 GPU 轉(zhuǎn)化成了通用 GPU (GPGPU)。
機(jī)器學(xué)習(xí)
最近,能夠良好映射到 GPU 實(shí)現(xiàn)方案的工作負(fù)載之一就是機(jī)器學(xué)習(xí)訓(xùn)練。通過(guò)充分運(yùn)用 GPU,顯著縮短了深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)間。
GPU 廠商試圖利用機(jī)器學(xué)習(xí)訓(xùn)練方面的成功來(lái)助推其在機(jī)器學(xué)習(xí)推斷上的發(fā)展(部署經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò))。隨著機(jī)器學(xué)習(xí)算法和所需數(shù)據(jù)精度的發(fā)展演進(jìn),GPU 廠商一直在調(diào)整他們的架構(gòu)以保持自身地位優(yōu)勢(shì)。例如,英偉達(dá)在他們的 Tesla P4 產(chǎn)品中提供 INT8 支持。然而,即使是更低的精度,例如二進(jìn)制和三進(jìn)制,今天也正在被很多用戶探索 [ 參考資料 4]。要利用機(jī)器學(xué)習(xí)及其它領(lǐng)域的進(jìn)步,GPU 用戶必須等待新硬件推出之后購(gòu)買(mǎi)新硬件。正如本白皮書(shū)后面所述,賽靈思 FPGA 和 SoC 的用戶則無(wú)需等待或購(gòu)買(mǎi)新硬件,因?yàn)檫@類(lèi)產(chǎn)品本身就具有高度的靈活性。
GPU 廠商想使自身成為這個(gè)新計(jì)算時(shí)代的首選計(jì)算平臺(tái),機(jī)器學(xué)習(xí)是他們的基礎(chǔ)。但要弄清楚 GPU 是否適合未來(lái)系統(tǒng),還要做更全面的系統(tǒng)級(jí)分析,需要考慮 GPU 架構(gòu)的很多局限性以及系統(tǒng)要求如何隨時(shí)間發(fā)展演進(jìn)。
GPU 架構(gòu)的局限性
本部分將深入研究典型的 GPU 架構(gòu),以揭示它的局限性以及如何將它們應(yīng)用于各種算法和工作負(fù)載。
SIMT ALU 陣列
圖 1 給出了典型的 GPU 方框圖。通用 GPU 計(jì)算功能的核心是大型的算數(shù)邏輯單元 (ALU) 或內(nèi)核陣列。這些 ALU 通常被認(rèn)為是單指令多線程 (SIMT),類(lèi)似于單指令多數(shù)據(jù) (SIMD)。
?
圖 1 :GPU 方框圖
基本原理是將工作負(fù)載分成數(shù)千個(gè)并行的線程。需要大量 GPU 線程來(lái)防止 ALU 閑置。然后,對(duì)這些線程進(jìn)行調(diào)度,以使 ALU 組并行執(zhí)行同一(單個(gè))指令。利用 SIMT,GPU 廠商能實(shí)現(xiàn)相對(duì) CPU 占位面積更小和能效更高的方案,因?yàn)閮?nèi)核的很多資源都可與相同組中的其他內(nèi)核共享。
然而,顯然只是特定的工作負(fù)載(或部分工作負(fù)載)能被高效映射到這種大規(guī)模并行架構(gòu)中 [ 參考資料 5]。如果構(gòu)成工作負(fù)載的線程不具有足夠的共性或并行性(例如連續(xù)工作負(fù)載或適度并行工作負(fù)載),則ALU 會(huì)閑置,導(dǎo)致計(jì)算效率降低。此外,構(gòu)成工作負(fù)載的線程預(yù)期要最大化 ALU 利用率,從而產(chǎn)生額外的時(shí)延。即使有英偉達(dá)的 Volta 架構(gòu)中的獨(dú)立線程調(diào)度這樣的功能,底層架構(gòu)也保持 SIMT,也需要大規(guī)模并行工作負(fù)載。
對(duì)于連續(xù)、適度并行或稀疏工作負(fù)載,GPU 提供的計(jì)算功能和效率甚至低于 CPU [ 參考資料 6]。例如用 GPU 實(shí)現(xiàn)稀疏矩陣計(jì)算 ;如果非零元素?cái)?shù)量較少,則從性能和效率角度看 GPU 低于或等同于 CPU[ 參考資料 7][ 參考資料 8]。
有趣的是,很多研究人員正在研究稀疏卷積神經(jīng)網(wǎng)絡(luò),以利用很多卷積神經(jīng)網(wǎng)絡(luò)中的大規(guī)模冗余[ 參考資料 9]。這種趨勢(shì)顯然在機(jī)器學(xué)習(xí)推斷領(lǐng)域向 GPU 提出了挑戰(zhàn)。
稀疏矩陣計(jì)算也是大數(shù)據(jù)分析中的關(guān)鍵環(huán)節(jié)。[ 參考資料 10]
包含大量并行計(jì)算任務(wù)的大多數(shù)工作負(fù)載也包含一些連續(xù)或適度并行元素,意味著需要 GPU-CPU 混合系統(tǒng)來(lái)滿足系統(tǒng)性能要求 [ 參考資料 11]。顯然,高端 CPU 需求會(huì)影響平臺(tái)的效率和成本效益,CPU 與GPU 之間的通信也會(huì)給系統(tǒng)增加潛在瓶頸。
SIMT/GPU 架構(gòu)的另一個(gè)局限性是 ALU 的功能取決于它的固定指令集和所支持的數(shù)據(jù)類(lèi)型。
離散數(shù)據(jù)類(lèi)型精度支持
系統(tǒng)設(shè)計(jì)人員正在探索簡(jiǎn)化數(shù)據(jù)類(lèi)型精度,以此實(shí)現(xiàn)計(jì)算性能的跳躍式提升,而且不會(huì)使精度明顯降低[ 參考資料 12][ 參考資料 13][ 參考資料 14]。
機(jī)器學(xué)習(xí)推斷在降低精度方面一馬當(dāng)先,首先是 FP16,然后是 INT16 和 INT8。研究人員正在探索進(jìn)一步降低精度,甚至降到二進(jìn)制 [ 參考資料 4][ 參考資料 15]。
GPU ALU 通常原生支持單精度浮點(diǎn)類(lèi)型 (FP32),有些情況支持雙精度浮點(diǎn) (FP64)。FP32 是圖形工作負(fù)載的首選精度,而 FP64 經(jīng)常用于一些 HPC 用途。低于 FP32 的精度通常無(wú)法在 GPU 中得到有效支持。因此采用標(biāo)準(zhǔn) GPU 上的更低精度,除了能減少所需存儲(chǔ)器帶寬以外,作用甚微。
GPU 通常提供一些二進(jìn)制運(yùn)算功能,但通常只能每 ALU 進(jìn)行 32 位寬運(yùn)算。32 位二進(jìn)制運(yùn)算存在很大的復(fù)雜性和面積需求。在二值化神經(jīng)網(wǎng)絡(luò)中,算法需要 XNOR 運(yùn)算,緊接著進(jìn)行種群 (population) 計(jì)數(shù)。NVidia GPU 只能每四個(gè)周期進(jìn)行一次種群計(jì)數(shù)運(yùn)算,這會(huì)極大影響二進(jìn)制計(jì)算 [ 參考資料 18]。如圖 2 所示,為了與機(jī)器學(xué)習(xí)推斷空間的發(fā)展保持同步,GPU 廠商一直進(jìn)行必要的芯片修改,以支持有限的幾種降精度數(shù)據(jù)類(lèi)型,例如 FP16 和 INT8。例如,Tesla P4 和 P40 卡上的 NVidia GPU 支持 INT8,每 ALU/Cuda 內(nèi)核提供 4 個(gè) INT8 運(yùn)算。
?
圖 2 :英偉達(dá)降精度支持
然而,英偉達(dá)面向 Tesla P40 上的 GoogLeNet v1 Inference 發(fā)布的機(jī)器學(xué)習(xí)推斷基準(zhǔn)結(jié)果表明,INT8 方案與 FP32 方案相比效率只提升 3 倍,說(shuō)明要在 GPU 架構(gòu)中強(qiáng)行降低精度并取得高效結(jié)果存在較大難度[ 參考資料 16]。
隨著機(jī)器學(xué)習(xí)和其他工作負(fù)載轉(zhuǎn)向更低精度和定制精度,GPU 廠商需要向市場(chǎng)推出更多新產(chǎn)品,他們的現(xiàn)有用戶也需要升級(jí)平臺(tái)才能受益于這種改進(jìn)。
評(píng)論
查看更多