NV自己打自己臉?圖靈的INT32提升越大的遊戲,安培的FP32×2提升越小

拋開RT Core和Tensor Core帶來的差異,20系的圖靈相對於10系的帕斯卡的性能提升主要來自於新增的Int單元。對比一下帕斯卡和圖靈的SM單元:

帕斯卡的SM單元

圖靈的SM單元

圖靈的每個SM單元,計算單元分成四個Block,每個Block從帕斯卡的32 CUDA改成16 INT32 + 16 FP32。帕斯卡的32 CUDA,只能同時執行整數指令或者浮點指令;而圖靈的INT32+FP32則可以同時執行整數指令和浮點指令。當然,這裡圖靈每個SM的浮點單元少了一半,所以如果2個圖靈SM和一個帕斯卡的SM相比,按照NV的白皮書的說法,不同遊戲的整數指令佔比不同,平均100條浮點指令對應36條整數指令,因此圖靈性能平均提升36%。

不同遊戲每百條浮點指令對應的整數指令

公版2080Ti理論性能是11.75 TFLOPS,1080Ti是10.61 TFLOPS,提升不過10%。結合上面的36%提升,算下來2080 Ti應該比1080 Ti提升50%;各家的遊戲評測中,基本也是40%左右的性能提升,遠比理論性能的提升幅度要高。

到了30系的安培這一代,SM規模再一次提升,每個Block從16 INT32+16 FP32變成16 INT32+16 FP32+16 FP32。這裡的兩組16 FP32,其中一組是和16 INT32共享數據通道的,也就是同一時鐘周期,要麼是16 INT32+16 FP32工作;要麼是16 FP32+16 FP32工作。

如果還是按照圖靈發布時的整數指令:浮點指令比例為36:100計算,執行36條整數指令,需要36個時鐘周期,同時這36個時鐘周期可以執行36條浮點指令;然後剩餘64條浮點指令,需要32個時鐘周期執行。也就是一共需要36+32=68個時鐘周期,和圖靈的100個時鐘周期相比,性能提升47%。不過因為每個SM單元多了16個FP32,因此是200%的理論性能,獲得了147%的實際性能提升。按照3080 25.06 FLOPS的理論性能計算,3080應該比2080 Ti提升56.8%。換成理論性能8.92 TFLOPS的2080,則是提升106%——這就是NV所說的兩倍於2080的依據

然而,36:100是NV在圖靈發布時公布的平均數據。如果不考慮理論性能的差異,假設某個遊戲的整數指令:浮點指令從36:100變成10:100的話,圖靈比帕斯卡提升只有10%,而安培比圖靈提升則可以達到81.8%;如果變成50:100的話,圖靈比帕斯卡提升50%,安培比圖靈提升則只有33%。這樣算下來,就和很多遊戲中的實測很接近了。考慮到圖靈上市以來,很多遊戲對圖靈進行了優化,50:100這個比例還是很有可能的。


Launch-Analyse nVidia GeForce RTX 3090 德站3dcenter對3090的發布分析

1.甲:這堆奸商,天天在抹黑30系顯卡的性能!

乙:他們怎麼抹黑了?

甲:他們把30系的真實性能表現說了出來!

2. nvidia粉絲舉辦線下聚會,大家一邊聚餐一邊談生,現場好不熱鬧。

聊天過程中,有個發燒友說道:這代顯卡發布會上的PPT水分太大了。

這話給路過的一個粉絲聽到了,抄起凳子就把他揍了一頓。

發燒友委屈地說:我都沒說是哪一代,憑什麼打我?

「你少騙人了」,這位粉絲咆哮道,「我關注nvidia那麼多年,哪一代PPT水分大我會不知道?」

3.nvidia發布RTX3080後,在線下舉辦了個調查活動,徵求大家對新顯卡的看法。

主持人簡要介紹了安培顯卡帶來的種種新特性,最後總結說:「RTX3080,性能相比上代2080ti提升了30%,功耗提升了21%,能耗比提升不到10%,但價格只需要2080ti的一半。你們對這個結果滿意嗎?滿意的請坐到我的左手邊,不滿意的請坐到我的右手邊。」

只見在場的人大部分都有秩序地做到了左手邊,寥寥幾個人做到了右手邊。但有一位戴著眼鏡花白頭髮的中年人坐在中間紋絲未動。

主持人問道:「請問這位先生,您的意見究竟是什麼呢?」

中年人站了起來,人們這才注意到他上身穿著閃亮的皮夾克。只見他徐徐說道:「你們給出的數據有問題,3080能耗比提升90%。」

主持人大驚失色,慌忙說道:「黃總您怎麼來了!」


1.先談談所謂的翻倍cuda core:

安培SM

在圖靈SM內,一個SM包括4個subcore子核,每個子核包括16寬度fp32 simd、16寬度int32 simd、fp64、sfu等單元若干。所以在圖靈subcore里有兩條數據路徑,fp32和int32。安培則將int32改進為fp32/int32,也就是原本int32這條數據路徑現在也能執行fp32指令了。但一個周期只能選擇執行fp32或是int32中的一種。當它執行fp32時,則subcore或者整個SM相比圖靈的fp32性能翻倍,當它執行int32時則整個SM與圖靈情況相同。所以fp32算力並不是時時刻刻翻倍。PPT上暴增的fp32算力只不過是最理想情況。

大佬發給我的圖靈、安培架構subcore內執行warp(表格里打錯了)內的部分線程的示意圖。上圖靈下安培,實際情況比這要複雜一些

表2的列3、4、5,即屬於效率翻倍的情況。

此外,就算fp32性能時時刻刻翻倍,圖形性能也不可能翻倍。因為前端、紋理單元、rop沒有跟著一起翻倍提升。

這樣一來一去就相當於打兩個折扣了。

2.關於光線追蹤:這次安培的rtcore主要改進就是增加了一個三角形求交單元。rtcore本身為bvh加速器,你可以把它看做一個目錄,光線可以通過這個目錄更快速地判定是否和一個三角形碰撞(求交)。數目眾多的光線逐個進行這種判定,則稱為光線的遍歷。

目錄有兩個層級,box層級和三角形層級,一般來說,一束光線要經過多次box層級碰撞檢測和一次三角形層級碰撞檢測,才能完成一次遍歷。所以box求交單元要比三角形求交單元數量多一些。在圖靈的一個rtcore里,這個比例是4個:1個。

安培增加了一個三角形求交單元,目的是為了增加有運動模糊時光線追蹤效果的處理速度,通過這個多出來的單元,結合插值演算法進行。目前它僅僅在一些渲染軟體中使用,並沒有應用在遊戲上。

那安培的光線追蹤性能提升來自於哪裡呢?一,是來自於規模的擴充。3080一共有68個SM,也就有了68個rtcore,如果是3090的話,則是82個。相比2080的46個、2080ti的68個,均有提升。二,是來自fp32性能的提升。

根據圖靈、安培白皮書里的幀分析,目前光追最大的瓶頸還是fp32性能,因為光線生成及最後著色是在流處理器中進行的。甚至,光線效果的降噪處理也要依賴FP32性能(部分媒體報道的目前光線追蹤遊戲依靠tensor core降噪是錯誤的)。而前文已經提到安培為提升fp32性能所作出的改進,光線追蹤性能自然也可以憑此更上一層樓。

至於"1.9倍能耗比提升",3080 "twice the performance as 2080" 這兩者就屬於有誤導成分了。但這樣做也是有其目的所在的。一般來說,60% 70%性能差距足以讓一個用戶猶豫是否升級。如果坦誠地告訴大眾,3080僅僅領先2080ti 30%,領先2080 65%,功耗還大幅增加,那即使價格下降,2080ti、2080用戶也多半會選擇跨過這代而去等下代產品。但如果通過宣傳引導你認為3080相比2080提升100%(對應領先2080ti 60%),與此同時能耗比還有1.9倍駭人提升,那2080ti、2080用戶可能直接選擇升級3080顯卡,事後不及時關注評測的話,還會被一直蒙在鼓裡。

總而言之,一俊遮百丑,無論怎樣,安培顯卡的性價比還是足以掩蓋誇大宣傳帶來的負面影響。但我真心覺得,它遠不配被叫做"10年以來提升最大的架構"。相比圖靈引入rtcore將光追從空中樓閣變為腳踏實地的房屋,以及改進單元並行執行fp32、int32,以及用tensorcore實現dlss,安培所做的無非就是各種加法,或者曰,堆料。然而,外在的價格直接改變了大家對兩者的看法。這也告訴我們,做人不單單要有好的品格學識,還要善於經營自己的外在,以及用恰當的方式宣揚自己,必要時甚至可以適當誇大,現今神童輩出,如兩歲攀登喜馬拉雅山、5歲開飛機者,皆如此類。


說說讓我很難受的幾點:

1、GA10X的共享內存,每個SM最大可以分配100KB的shared memory,也就是SM中每個線程平均不到1KB,對應的TU102,64線程64KB shared memory。圖像處理的時候最容易的優化方向就是共享內存了,相對於A100核心的專業卡,遊戲卡也閹割太多了。從這一點來說,GA10X核心每個SM相當於只有100個FP32 core,甚至還不到,因為L1/shared Memory只有128K,TU102是64FP32核心96K L1/shared Memory。A100每個SM雖然只有64個FP32和32FP64,卻有192KB/SM的L1/Shared Memory。

2、寄存器增加的也很少,相對於2080,3080的cuda cores是2080的2.9X,但是寄存器不到2倍。雖然一般不會遇到寄存器限制並發數量的問題,但是老黃的刀法還是砍得很準的。

------------------------------------------------------------------

深度學習訓練用FP32精度的還是值得的,3080相對於TItan有24%的提升,3090相對於titan應該有50%提升。FP16訓練提升不大,通過白皮書也可以看得出來。

https://www.pugetsystems.com/labs/hpc/RTX3080-TensorFlow-and-NAMD-Performance-on-Linux-Preliminary-1885/?__cf_chl_captcha_tk__=b48f6fde75badbc141901f2a4cc3a21a5880526d-1600453349-0-AbT49Q3aLUaere08cSS_BfC4efGoulzKijzlI-olLry5ym1sn9duHLNHzrUN-cObNnhTXOqM-x_9mH-pRmqf5S2PV8CBPTy-a4AsO93v_CPhrOaEES17-z1g9Dj8ZEpI6NqvM4peWjeafvE99XIlHz9DOt9spmpUFsqoO7IgxmOJYFmAY-8F8TgvkXAZcTyBJIMytqpyRh0M6miy2q9RAKAMv-z1hczEgG34H08ECvfZdU_SpJXkn0L3t5uwHVIEXArRfKXglOBw-weLIBNSavk4752BXG8Xvq9YRVd2cU0gVW3Lu65EM1r13jWnH1SuaqtJBJJY8RQpfrFXVb6_HO09-YEjWLc1rAt9fuPvtP2jzjxB8kFctEH881sPl1rfy0N6N2pvte-_5KYI-6Lw8sTNi-q5fE_rdm7R6-JpBAjFssXwrZQGjEBizad5DHiUm4e-lppcZlFFuttqG2fIuQTCiLawR0icHdj4pjTKK9-kxzXfR5b1YtFuuq8kV1LcJqoBWq51BUIuEU3XXhl3laP9rLOoC8jJqcIds0vw1zt9r6eDHn3LkApNZMPRPLU2-fNOfGaJF9_QdsHs4atT08I?

www.pugetsystems.com

GA102的白皮書

https://www.nvidia.com/content/dam/en-zz/Solutions/geforce/ampere/pdf/NVIDIA-ampere-GA102-GPU-Architecture-Whitepaper-V1.pdf?

www.nvidia.com


這個問題的重點就是一個較字,說明題主是能理性看待宣傳和實測差距的,只不過這個落差超出了他的心理預期,我認為這個落差是能填補上的

最主要的原因應該是遊戲和驅動的支持還沒跟上來,根據上個世代CPU和A卡的發展經驗,以前遊戲用不了那麼多核6C12T的至尊版和4C8T甚至是4C4T根本拉不開差距,如今6C6T跑很多單機已經開始感到吃力,而A卡也是這樣,同時期傾向於堆料堆顯存來提高性價比,剛買時除了價格便宜一點看起來很美好的紙面數據並沒有帶來實際優勢,但隨著驅動跟上發揮完全體的性能反超競品是常規操作

紙面數據轉化為實際性能是綜合了顯卡架構,圖形API,遊戲引擎,遊戲和驅動針對性優化等多方因素共同的結果

可能有人要說,那還要等很久才會出現能發揮完整性能的遊戲,我覺得現在不管是操作系統還是遊戲引擎發展都越來越快,只要硬體平均水平起來了,開發者就能放開手腳幹了


先問是不是,我們來看看發布時宣稱的兩點到底有沒有做到。

  • RTX 3080 的性能最高 2 倍於 RTX 2080

圖片來自視頻截圖,注意有 up to
  • Ampere 的能效 1.9 倍於 Turing

注意圖中小字:Control at 4K

以下觀點參考的是 TECHPOWERUP 和 超能網 的評測,其中前者的測試項目豐富 ( 足足有 23 款遊戲 ) ,並且對比了 i9-10900K 和 Ryzen 9 3900X ,以及 PCI-E 3.0 和 4.0 ;後者的光線追蹤項目豐富,並且對每款光線追蹤遊戲都給出了 RTX on 以及 RTX+DLSS on 的測試結果。

首先看傳統光柵化 3D 性能,在 4K 解析度下,先對不同顯卡在每款遊戲的 fps 歸一化,再求均值,得到的 relative performance 的結果是:

圖片來自 TECHPOWERUP ,下同

需指出,為了確保 fps 與過往測試的一致性,以上使用的是 i9-9900K @ 5.0GHz + DDR4 4000 C19,但是現在更好的遊戲 CPU 是 i9-10900K ,以及還要考慮 AMD 平台和 PCI-E 4.0 的情況,所以 TECHPOWERUP 又進行了補充測試:

基本是上下 1~2% 的浮動,結論變化不大。

( 當然,在 1080p~1440p 解析度,Intel 平台會有約 8~11% 的優勢 )

接下來是超能網提供的光線追蹤項目的性能測試

圖片來自超能網

單擊「數據視圖」按鈕,可以調出原始數據,進而計算出 RTX 3080 相對於其它兩款顯卡的相對性能。結合非光線追蹤環境的測試結果,我們得到關於性能的結論:

光線追蹤開,DLSS 關:RTX 3080 = 2.03x RTX 2080 = 1.53x RTX 2080 Ti

光線追蹤開,DLSS 開:RTX 3080 = 1.71x RTX 2080 = 1.37x RTX 2080 Ti

光線追蹤關 ( 或不支持 ) :RTX 3080 = 1.67x RTX 2080 = 1.32x RTX 2080 Ti

如果只看第一行,完全達到了 NV 宣稱的性能提升;不過就目前而言,第三行是更具代表性的情況。整體上看,「up to 2x 3080」略有水分,但是也說得過去。


接下來講能效。這裡給出的依然是 TECHPOWERUP 特色的 performance per watt ( 每瓦特性能,以每瓦特 fps 的形式呈現 ) 測試結果:

無光線追蹤時的能效:RTX 3080 = 1.18x RTX 2080 = 1.19x RTX 2080 Ti

而關於光線追蹤打開時的能效,TECHPOWERUP 未直接測試,超能網的數據也不全。如果按照前半部分的性能測試推測,以上兩個能效係數可能提高到 1.3~1.4x 。

總體來看,上述結果似乎與 NV 宣稱相距甚遠 ( 三星繼續出來挨打 ) 。不過,還記得開頭強調的小字嗎?宣稱的能效提升限定在 Control at 4K 的情況,所以我們單獨來看它:

由於未單獨給出 Control 的功耗,這裡只能使用 23 款遊戲的均值來替代:

RTX 3080 在 RT off / RT on / RT+DLSS on 三種情況下的 fps 分別為 48.3 / 28.2 / 52.4 ,除以功耗得到每瓦特 fps 分別為 0.1594 / 0.0931 / 0.1729 。

同樣的設定,RTX 2080 的每瓦特 fps 是 0.1247 / 0.0698 / 0.1330 ;RTX 2080 Super 是 0.1160 / 0.0654 / 0.1230 ;RTX 2080 Ti 是 0.1275 / 0.0740 / 0.1355 。

算下來,RTX 3080 的相對能效最大可達 1.42x ,最小只有 1.25x ,依然距離 2x 挺遠的

但是,老黃還是留了一手,回過頭去看那張圖:

圖中從未講這是 RTX 3080 vs RTX 2080,並且 1.9x Perf/W 的線段連接的是 130W 的 Ampere 和 240W 的 Turing 。也就是說,

  • Ampere 被限定在 130W ,你可以理解為 RTX 3070 / 3080 的筆記本版本 ;
  • Turing 被限定在 240W ,也就是略高於 RTX 2080 的水平,應該是桌面版本;
  • 遊戲為 Control ,4K 解析度 ( 參考 fps 的數值,RT 和 DLSS 大概率是打開的 ) 。

在以上三個條件同時滿足的情況下,按照 NV 的說法,我們會在這兩種平台觀測到相近的 60fps ,此時搭載 Ampere GPU 的系統,能效接近 1.9x Turing 。

( 60fps / 130W ) / ( 60fps / 240W ) = 1.85

作為總結,我還是那個觀點:Ampere could have done better.


推薦閱讀:
相关文章