《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 其他 > 教學(xué):頂級(jí)FPGA和GPU的PK

教學(xué):頂級(jí)FPGA和GPU的PK

2022-08-16
來(lái)源:FPGA之家
關(guān)鍵詞: IntelStraTIx10NX NVIDIA 芯片級(jí)

  本部分,,我們就跟隨作者一起看看Intel StraTIx10 NX和Nvidia在這個(gè)領(lǐng)域的利器T4以及V100之間的對(duì)比,,過(guò)程分為芯片級(jí)對(duì)比以及系統(tǒng)級(jí)對(duì)比。

  本部分一起先來(lái)看看芯片級(jí)對(duì)比

  首先來(lái)看下我們的GPU對(duì)手——Nvidia T4和V100分別有320個(gè)和640個(gè)張量核(專門用于AI工作負(fù)載的矩陣乘法引擎)

7a6a2812-1cfd-11ed-ba43-dac502259ad0.png

  Nvidia Tesla T4

7a868c1e-1cfd-11ed-ba43-dac502259ad0.png

  Nvidia Tesla V100

  下面表格總結(jié)了與StraTIx10 NX和這些同代工藝GPU的關(guān)鍵指標(biāo)對(duì)比,。 就die尺寸來(lái)說(shuō),,V100是Nvidia最大的12nm GPU,幾乎比T4大50%,,而StraTIx10 NX比兩種GPU都小,。

7aa010ee-1cfd-11ed-ba43-dac502259ad0.png

  首先,文章使用GPU最擅長(zhǎng)處理的工作負(fù)載:通用矩陣乘(GEMM)來(lái)跑GPU的benchmark(什么是GEMM請(qǐng)移步https://spaTIal-lang.org/gemm),,為了測(cè)量最佳的GPU性能,,對(duì)每個(gè)器件使用最新的library,這些庫(kù)不會(huì)出錯(cuò),,并且分別在使用和不使用張量核的情況下測(cè)試性能,。對(duì)于fp32和fp16實(shí)驗(yàn),分別使用CUDA10.0和10.2的CuBLAS庫(kù)進(jìn)行V100和T4,。對(duì)于int8,,我們使用CUDA10.2中的cuBLASLt庫(kù),這樣可以比cuBLAS庫(kù)獲得更高的int8性能,。文章使用Nvidia的官方(高度優(yōu)化)的cuDNN kernel來(lái)處理DL工作負(fù)載,,并且分別對(duì)V100和T4使用了從cuDNN7.6.2和7.6.5。 (cuBLAS API,,從cuda6.0開始,;cuBLASLt API,從cuda10.1開始)

  cuDNN庫(kù)不支持int8計(jì)算kernel,,但它們支持將所有模型權(quán)重保存在片上內(nèi)存中,。對(duì)于每個(gè)工作負(fù)載、問(wèn)題大小和序列長(zhǎng)度,,文章在兩種GPU上運(yùn)行了所有可能的配置組合,,如精度{fp32、fp16,、int8},、計(jì)算樣式{persistent、non-persistent},、張量核心設(shè)置{enable,、disable},。然后,選擇最佳的性能,,來(lái)和Stratix10 NX的NPU進(jìn)行比較,。 這里因?yàn)槭切酒?jí)對(duì)比,所以只考慮了芯核的計(jì)算效率,,不包括任何初始化,、芯核啟動(dòng)或主機(jī)-GPU數(shù)據(jù)傳輸開銷。

  下圖給出了T4和V100 GPU上fp32,、fp16和int8精度的GEMM benchmark測(cè)試結(jié)果,。結(jié)果表明,相對(duì)于張量核禁用情況(藍(lán)線),,啟用張量核(紅線) 可以顯著提高GPU在GEMM上的性能,。

7ac33b46-1cfd-11ed-ba43-dac502259ad0.png

  然而,一個(gè)普遍的趨勢(shì)是,,張量核雖然是為GEMM設(shè)計(jì)的,,但在矩陣大小為2048或以下情況時(shí)的利用效率明顯不如峰值情況(紅色虛線)。因此要實(shí)現(xiàn)高利用率,,除非工作負(fù)載中的矩陣大小非常大,,而這在實(shí)際DL工作負(fù)載中并不常見。T4和V100上的張量核都不支持fp32的精度,,而是在執(zhí)行乘法運(yùn)算之前,,將fp32數(shù)據(jù)轉(zhuǎn)換為fp16。相對(duì)于純fp16 GEMM,,這種數(shù)據(jù)轉(zhuǎn)換開銷降低了張量核性能,。另一個(gè)有趣的情況是,當(dāng)T4張量核在int8模式下工作時(shí),,它們需要將輸入矩陣從標(biāo)準(zhǔn)的行/列主要格式轉(zhuǎn)換為特定于張量核的布局,。因此,即使在處理非常大的8192×8192矩陣時(shí),,在張量核(沒有標(biāo)記的紅線)上實(shí)現(xiàn)的int8性能還不到峰值性能的45%,。

  為了更好地理解這種數(shù)據(jù)轉(zhuǎn)換的開銷,文章還進(jìn)行了一個(gè)額外的實(shí)驗(yàn),,在這個(gè)實(shí)驗(yàn)中,,對(duì)張量核進(jìn)行了特殊布局(帶有標(biāo)記的紅線)。即使不算矩陣布局變化的開銷,,對(duì)于4096×4096及以下的矩陣大小,,張量核利用率也小于40%,在6144×6144矩陣中利用率達(dá)到最高為72%。

  下面來(lái)看看FPGA上的情況,,上圖(Fig.6)的右上角那張圖比較了Stratix10 NX上的NPU性能與具有int8張量核的T4 GPU的性能,。為了公平地比較,文章禁用了NPU兩個(gè)輸入矩陣其中一個(gè)的矩陣布局變換,,只保留了對(duì)另一個(gè)輸入以及輸出矩陣的布局變換(因?yàn)镹PU以標(biāo)準(zhǔn)格式使用和生成這些矩陣),。

  雖然NPU是為矩陣向量運(yùn)算而設(shè)計(jì)的,但它在GEMM工作負(fù)載上仍然實(shí)現(xiàn)了與T4相似的性能,,其矩陣大小從512到3072不等(最大的矩陣可以fit進(jìn)片上BRAM)。

  最后,,一起看看頂級(jí)FPGA和GPU的PK結(jié)果,。下圖(Fig.7)將文章在Stratix10 NX上增強(qiáng)型NPU的性能與T4和V100的最佳性能進(jìn)行比較。對(duì)于比較小的batch-3和batch-6情況,,F(xiàn)PGA性能總是顯著高于兩個(gè)GPU,。FPGA在batch-6(其設(shè)計(jì)為:雙核batch-3)中表現(xiàn)最好,平均性能分別是T4和V100的24.2x和11.7x,。

7aefa910-1cfd-11ed-ba43-dac502259ad0.png

  與batch-6相比,,F(xiàn)PGA在batch-3上的性能較低,因?yàn)閮蓚€(gè)核中的一個(gè)完全空閑,。然而,,它仍然比T4和V100分別平均快了22.3x和9.3x。在batch size高于6時(shí),,如果batch size不能被6整除,,則NPU可能不能被充分利用。例如,,在batch size為8,、32和256的情況下,NPU最多可以達(dá)到其batch-6性能的67%,、89%和99%,,而batch size為12、36和258(上圖中的虛線所示)可以達(dá)到100%的效率,。在32輸入的中等batch size情況下,,NX仍然比T4具有更好的性能,并且與V100性能相當(dāng),。

  即使在比較大的batch size情況下,,NX的性能也比T4高58%,只比die size更大(大將近一倍)的V100低30%,。這些結(jié)果表明,,人工智能優(yōu)化的FPGA在低batch實(shí)時(shí)推理中不僅可以實(shí)現(xiàn)比GPU好一個(gè)數(shù)量級(jí)的性能,而且可以在放寬延遲約束下的高batch推理中和GPU匹敵。上圖(Fig.7)中的右下角圖總結(jié)了不同batch size情況下NX相對(duì)于CPU的平均加速情況,。

  上圖(Fig.7)中的右上角圖顯示了與不同batch大小下的兩個(gè)GPU相比,,NX的平均利用率。NX在batch-6中的平均利用率為37.1%,,而T4和V100分別僅為1.5%和3%,。GPU張量核并非直接互連,它們只能接收來(lái)自本地核內(nèi)寄存器文件的輸入,。因此,,每個(gè)GPU張量核都必須發(fā)送它的partial result到全局內(nèi)存中,并與其他張量核同步,,以結(jié)合這些partial result,。然后GPU從全局內(nèi)存中讀取組合好的矢量來(lái)執(zhí)行進(jìn)一步的操作,如激活函數(shù)(activation functions),。

  較高的batch size可以攤銷這種同步延遲,,但即使在batch-256情況下,T4和V100的利用率分別只有13.3%和17.8%,。 另一方面,,F(xiàn)PGA在架構(gòu)上也更具優(yōu)勢(shì),其在張量塊之間有專用的用來(lái)做減法的互連,, FPGA的可編程布線資源還允許將MVU tile和矢量單元級(jí)引擎級(jí)聯(lián)起來(lái)進(jìn)行直接通信,,減少了像GPU中那樣必須通過(guò)內(nèi)存通信的情況。

  綜上可以看到,,F(xiàn)PGA依靠架構(gòu)優(yōu)勢(shì)和超高的資源利用率,,在AI性能PK上對(duì)GPU形成了強(qiáng)勁挑戰(zhàn)。下一篇,,我們?cè)賮?lái)一起看看從系統(tǒng)角度,,F(xiàn)PGA和GPU的對(duì)比情況以及功耗方面的分析。



更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<< 

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。