當前位置:
首頁 > 科技 > 光與影的圖形革新,NVIDIA圖靈核心架構詳解

光與影的圖形革新,NVIDIA圖靈核心架構詳解

英偉達在SIGGRAPH 2018正式發布了圖靈架構和相關產品,隨後的GeForce RTX 20家族也粉墨登場。從圖靈架構在大會和隨後各大媒體的給出的信息來看,無論是功能還是性能,圖靈架構都堪稱GPU發展史上的一次革命,甚至英偉達官方在介紹中都宣稱圖靈是「Graphics Reinvented」。且不論這裡的意思是「徹底改造」還是「重新發明」,就圖靈架構本身,就已經讓人足夠驚訝,足夠震撼。

2018年8月14日的SIGGRAPH 2018現場,黃仁勛身穿一身黑色的皮衣走上演講台。在拿出全新一代GPU的時候,黃仁勛評價這款產品時稱其為「英偉達十多年來在計算機圖形領域最重要的創新」。當然,類似的話語可能在很多場合都能聽到,比如互聯網業界不斷的「重新發明」和各種各樣的「改變歷史」,於是乎,真正的「重新發明」和「改變歷史」卻容易被忽視。

但是,在本文的開頭,我們就不得不承認,「圖靈」架構和其所代表的GPU,是計算機圖形領域真正的改變和革新,它配得上「重新發明」和「改變歷史」的宣稱,不僅如此,隨著AI技術、RT技術以及各種高級渲染技術的出現,「圖靈」架構和其所代表的GPU正在將人們帶入一個全新的時代,一個虛擬的真實世界。

英偉達在SIGGRAPH 2018上發布了圖靈架構。

圖靈架構TU102核心。圖靈架構代表了GPU發展史上的一次重要變革。

圖靈架構——核心特點綜述

為了讓讀者更為快速的了解到圖靈架構都包含哪些優勢,本文先將圖靈架構所有的關鍵性技術和特性羅列在這一部分。隨後本文會根據不同的GPU產品進一步分析這些技術的實際意義和實現方式。

1.效率提升50%——全新的SM架構

圖靈的流式多處理器(Streaming Multiprocessor)採用全新的架構,被稱為圖靈SM。和上一代帕斯卡架構相比,每個CUDA Core的性能提升50%。性能提升的主要原因是兩個關鍵性的改進:一是圖靈SM添加了新的獨立整數數據路徑,可以和浮點數據路徑同時執行。二是圖靈SM的內存路徑已經經過重新設計,將共享內容、紋理緩存和內存讀取緩存統一在一起,對於一些常見的工作負載,這可以為L1緩存提供2倍以上的帶寬和2倍以上的容量。

2.走向AI——加入張量核心

圖靈架構中加入了張量核心,專門用於執行張量或者矩陣運算,其主要目的是用於為深度學習計算提供加速。圖靈中的張量核心和之前伏打架構中的類似,但是圖靈張量核心還是做出了進一步的優化,包括支持INT8和INT4精度,當然也能夠支持傳統的FP16精度。

藉由深度學習帶來的AI能力,圖靈實現名為深度學習超級採樣(Deep Learning Super Sampling,簡稱DLSS)的技術,這項技術能夠智能的判斷圖形內容,自主構簡高質量的最終圖像。和傳統的TAA等抗鋸齒技術相比,DLSS的資源要求更少,並且避免了諸如透明度場景和紋理模糊等問題。

3.革命——實時光線追蹤加速

圖靈架構引入了實時光線追蹤技術,使得GPU能夠進行實時的光線追蹤計算,並且具有物理上精確地折射、反射和陰影計算能力。能夠做到這一點是由於圖靈架構中引入了全新的RT Core也就是光線追蹤計算核心,RT Core能夠支持的軟體包括英偉達RTX技術,微軟的DXR、英偉達OptiX、Vulkan等。

4.改變圖像呈現方法——深度學習圖形技術

英偉達推出了名為NGX的深度學習框架,能夠利用DNN和一套神經服務來執行相關AI功能,實現加速計算和增強圖形效果、渲染和其他應用程序的能力。目前英偉達推出的AI相關的功能包括DLSS、AI inPainting、AI Slow-Mo以及AI Super Rez等技術。

5.全新渲染模式——新加入的高級渲染技術

每一次英偉達更新GPU架構,都會加入一些高級渲染技術,在圖靈架構上,英偉達新增了四個高級渲染技術,包括網格著色技術Mesh Shading,可變速率著色VRS,紋理空間著色和多視圖渲染。

6.加強AI計算——用於推理的深度學習功能

這部分內容主要是指圖靈架構在支持張量核心後,擁有了深度學習的推理能力,主要支持的部分包括CUDA和CuDNN,以及其他常見的深度學習框架。另外,圖靈的張量核心還加強對INT8、INT4矩陣計算的支持。

7.其它:GDDR6、NVLink和VirtualLink

圖靈架構還提供了對GDDR6、NVLink和VirtualLink的支持。其中GDDR6不用多說,NVLink是英偉達專屬的高速匯流排,在民用卡上是首次使用,也是用在RTX顯卡上取代SLI。VirtualLink主要目的是通過USB-C介面,提高顯卡在VR設備上的方便性。

深入探尋圖靈架構內部的秘密

在上文了解了圖靈架構的相關技術特點後,本節將從具體產品開始,深入圖靈架構的內部設計,揭示圖靈架構設計的秘密。

從工藝開始——TSMC 12nm FFN

在之前英偉達發布伏打架構的相關產品時,就已經使用了台積電的12nm FFN工藝。台積電在2017年公布相關半導體的工藝研發進度時,曾經提到在16nm工藝之後的兩個分支,其中一個是12nm FFC,另一個是更遠一些的7nm。12nm FFC的工藝指標包括減少20%的晶元面積,採用更小的6T庫用於取代目前的7.5T或者9T庫。

不同廠商的標準單元尺寸。

採用更小尺寸的庫文件可以有效縮減晶體管面積。

不同尺寸的庫文件高度和體積都有所不同,其性能表現也略有差異。

在傳統工藝的小型化道路上,柵極間距和金屬布線間距是關鍵數據,減少這兩個數據有助於減少整個晶元的面積。但是目前僅僅縮小這兩個關鍵參數,也很難進一步提高晶體管密度、縮小產品尺寸。在這種情況下,另闢蹊徑採用縮小標準單元尺寸、改進內部結構的方法就被提上了前台。

台積電在12nm FFC上採用的就是這樣的方法,至於12nm FFN,則是台積電針對英偉達這樣的大客戶提出的特別優化的工藝,其本質和12nm FFC應該沒有太大差別。在12nm上,台積電採用了6T庫,另外還採用了多種優化手段,比如標準單元重疊布線、縮小晶體管之間的距離以節省面積等。

採用更小的6T庫和各種手段縮小晶體管之間面積的方法,並不是沒有任何副作用的。副作用也很明確,由於單元高度降低,單元性能會下降,反映在實際應用中就會發生最高頻率難以提升等問題。但是對GPU來說這並不是問題,目前GPU運行頻率最高不超過2GHz,遠遠未達工藝上限。反而由於單元面積縮小帶來的ALU數量提升能進一步提高GPU的性能。這也是伏打架構、圖靈架構發展的方向——更多的計算單元、更強的計算性能。

比大更大——三款不同的核心

從大到小分別為圖靈TU102、TU104、TU106的核心架構簡圖。TU106的規模相當於TU102的50%。

圖靈架構目前已經衍生出三種不同的核心,分別是TU102、TU104和TU106。值得注意的是,這三顆不同的核心它的面積、晶體管數量、計算單元數量並不像上代產品那樣前者是後者的2倍。從目前的數據來看,TU106的面積和晶體管數量甚至不比帕斯卡架構的頂級產品GP102少多少。

圖靈架構的GeForce產品使用的並非完整核心。本表格的數據採用的是創始人版本的頻率下所能達到的性能。

目前圖靈架構最完整、最大規模的晶元是TU102,其晶元面積高達754平方毫米,僅次於伏打架構的GV100核心。在半導體製造中,晶元面積和產品價格呈正比,相比上代帕斯卡架構的GP102,圖靈TU102的首發價格高出不少也應該就可以理解了。另外值得一提的是TU106,在傳統定義中,106應該是一顆中端核心,但是本次的TU106核心面積和GP102基本相當,從晶元面積角度來看,應該劃入傳統大核心行列,TU106並不是一顆典型的甜點級別中端顯卡應該具有的配置。

具體到每款核心的配置而言的話,以TU102為例,TU102擁有6個GPC,每個GPC中,又包含了一個ROP單元和6個TPC。每個TPC包含2個SM。每個SM包含64個CUDA核心、8個張量核心、256KB寄存器、4個紋理單元和96KB L1/共享緩存配置。光線追蹤功能由每個SM中內置的RT核心進行計算。這樣一來,TU102的單元計算如下:

CUDA核心:64×2×6×6=4608個

張量核心:8×2×6×6=576個

RT核心:1×2×6×6=72個

另外,TU102還有144個FP64單元,用於執行相關雙精度計算以實現架構的兼容性和普適性。從配置情況來看,應該是每個SM中配置了2個FP64單元,總計2*2*6*6=144個。但是目前英偉達給出的TU102架構簡圖中,並沒有包含FP64單元的任何信息。

除了計算部分外,TU102的存儲部分則包含了12個32bit的GDDR6內存控制器,每個內存控制器綁定了8個ROP單元和512KB L2緩存。完整的TU102核心包含了96個ROP單元和6144KB的L2緩存。外部鏈接方面,TU102和TU104都支持NVLink 2.0匯流排,可以用SLI或者其他的高速互聯方案。TU102包含兩個NVLink X8鏈路,每個鏈路在每個方向上都可以提供高達25Gb/s的傳輸帶寬,總計總計雙向帶寬為100Gb/s,也就是12.5GB/s。

進一步看實際產品的話,目前圖靈架構已經面世的產品分別是GeForce RTX 2080Ti、RTX 2080和RTX 2070三款。其中前兩款都不是完整核心,RTX 2080Ti被屏蔽了4個SM(256個CUDA Core)和4個RT核心以及32個張量核心,顯存位寬也從384bit降低到了352bit。另一款RTX 2080也並非完整核心,被屏蔽了2個SM(128個CUDA Core)和2個RT Core以及16個張量核心。完整產品的TU102和TU104被用作生產Quadro RTX6000和Quadro RTX 5000,畢竟專業計算卡的利潤要高很多。

如何衡量新一代GPU的性能

根據英偉達的數據,在一次典型的混合計算中,不同核心佔用的工作負載量是不同的。

目前的GPU已經變得如此複雜,因此用單一的性能指標來衡量它的性能顯然是不夠完整了。比如圖靈架構的GPU,包含了光線追蹤核心、張量核心、傳統GPU部分以及整數核心等,這是一個典型的混合渲染模型。英偉達嘗試在圖靈GPU上運行實際應用程序來判斷混合渲染模型的性能分布。根據英偉達的數據,最終得到了在一次混合計算中各個不同的核心運行的時間:

張量核心:20%

CUDA核心:80%

RT核心:40%

INT32核心:28%

根據這個結果,英偉達提出了一種名為RTX-OPS的演算法,其具體的計算方式為:RTX-OPS=張量×20% + FP32 ×80% + RT-OPS×40% + INT32 × 28%

GTX 2080Ti的計算結果是:RTX-OPS = 114 ×20% + 14 × 80% + 100 × 40% + 14 × 28% = 78 RTX-OPS

其餘的TU104和TU106也可以利用此方法得到RTX-OPS性能。這是英偉達對新一代顯卡性能的全新定義。

兩大變革——詳解圖靈流式多處理器架構

全新的圖靈SM核心,注意分離的INT和FP、張量核心,還有下方的RT核。

英偉達數據顯示,在分離了INT和FP計算之後,會帶來大約36%的性能提升。

圖靈全新的共享緩存架構效能比上代產品大幅度提升。

相比之前的SM架構,圖靈的新SM架構在各種性能測試中提高了大約50%的綜合性能。

圖靈採用了全新設計的流式多處理器也就是SM。每個圖靈TPC中包含2個SM,每個SM有64個FP32核心和64個INT32核心。和之前的帕斯卡結構有所不同的是,INT32核心是首次加入,之前的帕斯卡架構只有128個FP32核心。之所以需要加入INT整數核心,是因為圖靈目前能夠支持FP和INT並發操作,這項功能類似於伏打架構的獨立線程調度。

另外,每個圖靈SM還包含了8個混合精度的張量計算核心,單核心每周期可以運行64個混合張量計算(FMA),8個核心就可以運行1024個混合精度計算。RT計算方面,每個SM有一個RT核心。圖靈張量核心和RT核心的作用我們後文還有詳細解釋。

具體到SM內核方面,每個圖靈SM都會被劃分為4個區塊,每個區塊有16個FP32核心和16個INT32核心、一個warp調度器和一個調度單元,每個warp調度器和調度單元每周期並發32個線程的任務。此外,每個區塊包含了一個新的L0指令高速緩存和一個64KB的寄存器。四個區塊共享96KB L1數據緩存/共享內存。

根據英偉達官方說明,圖靈的SM的最重大改進在於對核心執行數據路路徑的改進。一般來說,現代著色器的工作負載通常混合使用FP和算數指令,比如FADD或者FMAD搭配一些簡單的指令——包括定址或者整數加法、數據拾取、浮點比較大小、處理結果的大小值等。

在傳統的計算體系中,只要有一個非浮點的指令進行,浮點指令就會停止並處於等待狀態。根據英偉達的數據,目前圖形計算中100個浮點指令會包含36條整數計算指令,傳統演算法需要互相等待,在圖靈架構上FP和INT指令將分別被移動到單獨的管道,這將帶來至少36%的浮點計算能力提升。

在存儲系統方面,圖靈的SM設計還為共享內存、L1和紋理緩存引入了全新的統一緩存架構,這種統一設計允許L1緩存調配資源,還允許重新配置共享緩存容量使其變得更大,尤其是在共享緩存分配沒有充分使用所有的緩存時。舉例來說,圖靈SM中的96KB的緩存可靈活配置,比如傳統圖形計算可以劃分為64KB的圖形著色器緩存和32KB紋理緩存,但是在計算工作負載下,又可以變化為32KB的共享內存和64KB L1緩存,或者反過來。相比帕斯卡,圖靈SM中的緩存設計帶來了2倍的L1帶寬、更低的L1命中延遲、最高2.7倍的L1容量和2倍的L2容量。

由於圖靈的SM架構在數據執行和緩存設計上的重大改進,因此圖靈的SM核心平均效能達到了上代產品的1.5倍,英偉達官方用一組測試數據證明了這個觀點。

圖靈的張量核心

圖靈是第二個在民用級別GPU中加入張量核心的GPU,第一個是伏打架構的GV100。

圖靈是第二個為GPU加入張量核心的架構。圖靈張量核心類似於在之前伏打架構GV100中引入的張量核心,支持高精度的FP16計算,也能夠支持比較簡單快速的INT8和INT4進度模式。張量核心的主要用於加速矩陣——矩陣乘法,這是訓練神經網路和推理功能的核心演算法,可以根據給定的輸入信息訓練DNN深度神經網路來實現推斷和傳遞相關信息,諸如人臉識別、汽車類型識別、實時語音翻譯以及個性化用戶推薦等。將張量核心引入圖靈架構後,可以為遊戲和相關應用帶來深度學習的加持。圖靈張量核心能夠基於英偉達NGX神經服務功能實現基於AI的圖形增強、渲染增強和其他功能。這部分內容後文還有詳細介紹。

以TU102為例,每個SM中包含了8個張量核心,總計576個。每個SM中的8個張量核心可以執行512個FP16乘法和累加計算,或者2018個FP混合精度計算(如前文),INT8模式下的計算速度是FP16模式下的兩倍,比如每周期2048個整數計算,INT4這種低精度計算下速度還要翻倍,能夠達到每周4096個整數計算。

由於張量核心的存在,在進行深度學習相關的神經網路計算時,圖靈能夠以快得多的速度完成計算,這一點遠遠勝出前代帕斯卡架構的任何核心。有關深度學習和張量計算的內容,有興趣的讀者可以參考本刊對伏打架構的解讀文章。

更快、更有效——圖靈的存儲和顯示子系統架構

除了SM和計算體系架構外,圖靈在內存子系統方面也有著巨大的進步。其主要改進包括主內存的類型(GDDR6支持),高速緩存和數據壓縮能力,改進和增強的GPU計算能力、新的顯示和視頻編解碼模塊、加強的VR功能等。

GDDR6:快!

GDDR6顆粒帶來了更高的速速、更大的帶寬和更低的功耗。圖為三星GDDR6顆粒。

圖靈是首次採用GDDR6的GPU架構,為此圖靈徹底重置了內存控制器部分。

顯示器解析度的不斷提升和渲染技術不斷複雜化,都對GPU的內存帶寬和內存容量提出了要求。對於這一點業內曾有過分歧。AMD在很早就用上了HBM顯存,而英偉達在民用級GPU上則堅持GDDR道路,並首先使用了GDDR5X顯存顆粒。在圖靈架構上,英偉達開始使用更快的GDDR6顯存顆粒。

GDDR6顯存顆粒的起步頻率是12Gbps,有望進一步提升至16Gbps甚至更高,目前圖靈使用的GDDR6速度為14Gbps。為了使用如此快速的顯存顆粒,圖靈的顯存控制器經過了重新設計,以適應新的顯存顆粒帶來的速度、功耗和噪音挑戰,英偉達宣稱圖靈的電路和封裝設計降低了40%的信號串擾。另外,圖靈的顯存控制器還加入了時鐘門控設計,方便GPU根據顯存介面的繁忙程度調整功耗配比。

在使用了GDDR6後,TU102的顯存帶寬高達672GB/s,是上代帕斯卡架構GP102的155%,速度更快。

數據壓縮能力——有效帶寬增加50%

圖靈改進了數據壓縮能力,並針對不同數據採用不同壓縮方法,有效帶寬相比上代產品增加50%。

顯存帶寬提升也並不意味著數據可以無限制使用,對GPU而言,顯存帶寬是永遠不夠的。現代GPU設計中都要採用各種各樣的數據壓縮技術來降低存儲帶寬的壓力。英偉達在之前的帕斯卡架構中就加入了多種數據壓縮演算法,GPU可以根據不同的數據特徵來選取不同的壓縮演算法,從而獲得較高的效率並減少寫入內存或者讀取至L2的數據量。圖靈架構在這方面做出了一定的優化,和帕斯卡架構相比,圖靈的壓縮演算法能夠進一步降低帶寬,減少流量,實際有效帶寬相比帕斯卡增加了50%。

顯示能力和編解碼能力

圖靈編解碼能力一覽,目前圖靈可以支持8K@30Hz HDR視頻。

英偉達是VirtualLink組織的成員,目前已經將VirtualLink的相關標準引入圖靈架構。

圖靈架構的全新顯卡都提供了對USB-C介面的支持。

在顯示能力方面圖靈做出了加強,圖靈架構的GPU內置了一顆全新設計的顯示引擎,能夠支持更高解析度、支持DP 1.4a介面(帶寬8.1Gbps,支持8K@60Hz,),支持HDR以及ESA的顯示流壓縮DSC1.2技術,能夠提供無損視覺壓縮。值得一提的是,圖靈架構GPU能夠以60Hz的頻率驅動2個8K解析度顯示器,每個顯示器使用一根數據線連接,也可以選用USB-C。

除了顯示晶元外,新的顯示引擎還加入了原生HDR處理和色調映射,後者是一項在傳統標準動態範圍顯示器上近似顯示高動態範圍圖像的技術,圖靈目前可以支持ITU-E 建議書中的BT.2100標準定義的色調映射,以避免不同的HDR顯示器上發生色彩偏移。

在編解碼能力方面,圖靈架構的GPU支持增強型NVENC編碼器單元,可以以30fps的速度實現對H.265(HEVC)8K編碼的支持。新的NVENC編碼器在H.265模式下能夠節約高達25%的比特率,在H.264下也能夠提供15%的比特率節省。除了編碼器的能力外,在解碼方面,NVDEC解碼器目前支持H.264 8K@30fps視頻、VP9編碼的10/12bit HDR解碼或者HEVC YUV444 10/12b HDR解碼。

和帕斯卡的GPU相比,圖靈的編碼器提高了編解碼質量,並且可以大大降低CPU負載。一個例子就是CPU一般難以完成4K流式傳輸的編碼,但是圖靈GPU可以玩成這樣的任務,這使得線上的4K高清直播或者數據實時傳輸成為可能。

除了上述內容外,圖靈GPU在功能方面的改進還包括USB-C和支持VirtualLink,這項技術主要是用於和VR設備配合,改變目前VR設備在連接PC時需要多條數據線的情況,僅使用USB-C介面即可完成數據、音頻和電源輸出。由於本刊之前對VirtualLink相應的技術已經做過詳細解讀,因此在本文中不再贅述。

生而為光——圖靈光線追蹤技術解析

從技術上來說,光線追蹤計算是典型的計算密集型計算。雖然這項技術的基本演算法和實現方式早在上個世紀70年代乃至隨後的十幾年就已經基本完善,但是實時光線追蹤在圖靈之前依舊無法市場化的存在。

比如英偉達在之前的產品中推出了GPU加速的光線追蹤演算法和相關API,這些演算法和API比如NVIDIAIray以及OptiX都是為離線渲染的光線追蹤準備的,藝術家和設計師可以利用這些演算法實現高速的光線追蹤場景生成,數分鐘就可以得到一張精美的光線追蹤場景畫面,但這對遊戲需要每秒30幀乃至更高的速度才能具有基本的娛樂性和交互性而言,這樣的實現能力是完全不夠的。

英偉達之前公布的SOL Ray Tracing Demo,採用的是多路TITAN V顯卡進行實時計算,目前已經可以在圖靈上以更高的速度實時運行。

光柵化和圖靈混合渲染模式對比。

英偉達建議人們採用混合光線追蹤和光柵化的方法實現場景,畢竟光柵化下發展出了大量高效率且質量不錯的技術。

光柵化和加入光線追蹤後不同的渲染流程對比。

在GPU上進行實時光線追蹤是一個巨大的技術挑戰,英偉達的GPU硬體和軟體團隊經過了數十年的合作才基本解決這個問題。目前圖靈架構中包含了能夠快速完成光線追蹤計算的引擎,被稱為RT核心,擁有RT核心的圖靈架構GPU搭配英偉達的RTX軟體技術,終於使得實時光線追蹤的計算成為了可能。

說起光線追蹤,就不得不提起傳統的光柵化處理。傳統的實時3D圖形計算採用的是光柵化的方式。目前主流引擎都對光柵化渲染提供了非常好的支持,光柵化也能夠實現相當逼真的3D場景(雖然光柵化完成後3D信息就已經轉化為2D場景)。

但是,由於光柵化計算並不是對物體和光線進行了真正的交互處理,因此存在非常多的局限性。比如靜態的光照貼圖在某場景下是完全正確的,但是移動場景後就會出現違反物理事實的錯誤,再比如光柵化的陰影經常遭受混疊和光泄露等問題,比如屏幕空間反射只能反射屏幕上可見對象,而實際情況往往複雜太多。這些問題都是源自於光柵化本身,這種渲染方法在很大程度上並不考慮真正的光線交互,很多時候它只是2D化的3D場景而已,就像一張可以移動的繪畫。

光柵化出現了很多難以處理的問題,如果依舊在光柵化的條件下解決這些問題也需要高昂的代價。在這種情況下,通過引入光線追蹤,讓光線在3D場景中通過碰撞和反射、折射來生成真正的數據和信息,就不失為一個很好的解決手段了。

需要注意的是,只使用光線追蹤來計算實時場景依舊難以實現的,計算量過於巨大且在部分場景效費比並不高。因此在圖靈架構上,英偉達採用了折中的方法,那就是光線追蹤和光柵化的組合。在這種方法中,光柵化用於最有效的地方,光線追蹤用於那些相比光柵化而言最具視覺效果的地方,比如渲染反射、折射和陰影。因此,圖靈架構支持的是「光柵化+光線追蹤」,這是一種新的混合渲染方式,同時擁有光柵化和光線追蹤的優勢。

舉例來說,在實際的開發過程中,光柵化和Z緩衝在確定對象可見性方面要快很多,並且可以替代光線追蹤跟蹤過程的主光線投射階段。在這個階段之後,光線追蹤就可以進行二次光線生成和跟蹤,以生成高質量、經過物理校正的反射、折射和陰影。在這個階段,開發人員還可以使用材料屬性閥值來確定在場景中執行光線追蹤的區域,這種技術可以指定那種具有一定反射率的表面(例如70%)才會觸發在該表面上應用光線追蹤並生成二次光線。通過混合光線追蹤和光柵化處理,開發人員可以在高幀率和圖像質量之間進行平衡,對高保真用戶而言,從主光線到次級光線都可以使用光線追蹤以獲得最出色的圖像質量。

在光線追蹤的計算方面,雖然圖靈架構基於RT核心能夠完成實時光線追蹤,但是每個像素或者物體表面位置的主要或者次要光線的數量會根據許多其他因素而變化,包括場景的複雜度、解析度、場景中渲染的其他圖形效果,當然還有GPU的計算能力。

對實時光線追蹤而言,不要指望每個像素都能實施投射上百條光線並計算出來,實際上圖靈架構對實時光線追蹤的計算也是非常節省的,一般指計算較少的光線,但這往往會導致噪點的出現,這個時候需要特殊的去噪濾波技術來降低噪點,英偉達實時光線追蹤搭配了專屬的降噪模塊,可以顯著減少每個像素所需的光線數量,同時也能夠產生不錯的效果。在這種演算法的幫助下,生成的圖形質量甚至和高端電影特效一樣完美。

目前圖靈架構的GPU可以進行下列渲染的光線追蹤計算:

1. 折射和反射

2. 陰影和環境光遮蔽計算

3. 全局照明計算

4. 實時和離線的光照貼圖烘焙

5. 對拍攝產品的高品質美化預覽

6. 用於頭戴式VR設備主光線渲染

7. 遮擋剔除

8. 物理、碰撞檢測、粒子模擬

9. 音頻模擬,比如基於OptiX API構建的NVIDIA VRworks音效

10. AI可見性檢查

11. 引擎內路徑跟蹤,生成參考截圖等

創新實踐——圖靈RT核心解析

圖靈在光線追蹤上的最大特色就是加入了專用的RT核心。RT核心的作用就是加速邊界體積層次(BVH)遍歷和光線/三角形(基元)交叉測試(光線投射)。

在圖靈之前的GPU也支持光線追蹤,不過BVH遍歷會耗盡GPU所有資源。

在加入了硬體光線追蹤模塊後,BVH遍歷和和接下來的交叉測試都可以交給專用硬體,效率得到了巨大提升。

圖靈光線追蹤效能大約在帕斯卡架構的十倍以上。

光線追蹤計算簡介

光線追蹤是一種渲染技術,它的主要目的是通過計算光和渲染物體之間的反應,得到正確的反射、折射、陰影、間接照明等結果,從而逼真的模擬場景和場景內對象的光照情況。目前主流的光線追蹤技術並不是將場景內的光線投射至用戶眼睛,而是通過2D觀察平面(像素平面)將光線實際投射或者從視圖相機向後拍攝到3D場景中,並回到光源的光線。一般來說,反向跟蹤過程比正向跟蹤光源的光線更有效,因為只有穿過視平面到達眼睛的光線才會被計算。

目前主流的光線追蹤演算法是從觀察者出發光線,倒序計算。

一個典型的BVH過程,通過不斷的逼近範圍,最終觸及三角形。

BVH過程的流程圖,圖片中所有物體都被範圍包裹,光線只需要對樹形結構遍歷即可完成。

光線追蹤計算的過程包含了很多內容,物體表面的材質和光滑程度、色彩、不同類型的反射和折射或者吸收光,都會影響最終的計算結果。逼真的場景計算除了和這些因素有關外,還和射入場景的光線數量有關,以及和材質交互後產生的二次光線數量。很多因素都影響射入光線數量,包括但不限於希望進行光線追蹤的物體的數量和類型,以及GPU的計算能力等。

在具體演算法實現上,光線追蹤計算實際上通過圖像平面中的每個像素從相機(觀察者的眼睛)射出一條或者多條光線,然後測試光線是否和場景中的任何基元相交。如果相交,則確定從原點到基元的距離,衡量基元的顏色數據,這有助於確定最終顏色像素。接下來,光線可能會反彈並撞擊其他物體,並從其他物體中獲得顏色和光照信息,一直到最後。在這種演算法中,光線和基元的碰撞就顯得非常重要。可以使用不同類型的技術來優化加速光線和基元的相交測試,並減少必須投射的光線數量從而提高性能。

由於光線和基元在場景中的碰撞檢測非常重要,因此一種流行的演算法就是使用基於樹的加速結構,其中包含了多個分層排列的邊界框,邊界框包圍或者圍繞著不同數量的場景幾何體,大的邊界框可能包含了較小的邊界框,較小的邊界框內再包含實際的場景物體。這種分層排列的邊界框被稱為邊界體積層次結構,或者BVH。BVH通常被列成具有多個級別的樹形結構,每個級別都有一個或者多個節點,從頂層的單根節點開始,向下流入不同級別的多個後代節點。

簡單來說,BVH的運作過程,就像將場景中的物體分為很多組,每組用邊界確定範圍。當光線撞擊到邊界時再判斷穿入後是否和下一個組繼續碰撞,直到最終撞到基元,完成光線/三角形交叉測試(光線投射)。當光線沒有碰撞任何邊界時,則結束此次追蹤過程。

在了解了光線追蹤計算的基本過程後,就完全可以理解有關RT核心的相關內容了。在沒有專用的加速硬體時,完成一次BVH遍歷和光線投射,需要不斷的通過著色器來循環處理光線的BVH過程,每個光線需要數千個指令來測試BVH中的邊界框交點,直到最終擊中基元並且交叉處的顏色有助於最終像素的顏色確定(如果沒有擊中,則可以使用背景顏色替換),這樣一來,GPU將不斷的重複光線追蹤的遍歷過程,在遍歷結束之前無法對GPU進行實時操作。

英偉達演示的有關不同降噪選擇下光線追蹤陰影和傳統陰影映射的對比。

陰影映射和光線追蹤降噪前陰影貼圖、光線追蹤降噪後陰影貼圖對比,光線追蹤降噪後陰影效果顯然更為出色。

SSAO和光線追蹤AO的實際效果對比,可見後者逼真太多。

光線追蹤目前不僅在遊戲中使用,也可以在建築業等行業使用。

光線追蹤在遊戲中的實際應用,注意車身上的火焰反射。

但是,圖靈的RT核心可以處理所有的BVH遍歷和最終的光線投射。因為BVH遍歷和光線投射可以執行固定的演算法,因此設計人員可以將其固化在硬體中,利用固化的硬體單元來執行這種暴力計算,從而將GPU流處理器等從中解脫出來。RT核心包括兩個專用單元,其中一個進行邊界框測試,完成BVH遍歷;另一個則進行三角形交叉測試。GPU或SM只需要啟動這個過程,RT核心就會高效率的完成這兩個步驟,並向SM反饋命中或者不命中。SM的其他部分可以自由執行其他的圖形任務或者計算工作,兩不干涉。

另外值得一提的是,由於目前的光線追蹤技術無法計算如此多的光線,因此偏向於採用較少的光線計算,然而這也帶來了噪點。噪點的解決方法依靠降噪技術,後者能夠顯著改善可能有稀疏數據構成的噪點圖像視覺質量。由於不同類型的噪點有各自不同的產生原因,因此也有相對應降噪演算法存在。英偉達目前正在基於AI和非AI演算法進行降噪,並且希望未來通過AI技術取代非AI技術降噪演算法,最終實現正確的光照表面。

性能方面,使用RT核心的圖靈架構GPU在光線追蹤能力方面明顯快於帕斯卡架構的GPU。比較GTX1080Ti和GTX2080Ti,前者執行速度大約為1.1GigaRays,後者可以達到前者速度的十倍以上。

改變圖像的呈現方式——英偉達NGX技術

前文曾經提到,圖靈架構是第二個在GPU中加入了AI加速模塊的產品,這意味著圖靈有很多機會利用AI能力來改善圖形效果,這種方法將徹底改變圖像呈現的方式,可以說在圖靈架構的GPU在一定程度上不再是一個計算設備,而是一個「繪畫設備」。

基於這種能力,英偉達為圖靈架構帶來了一整套新技術,被稱為Neural Graphics Acceleration,也就是「神經圖形加速」,簡稱為NGX。NGX利用深度神經網路和神經服務來執行AI功能。需要注意的是,NGX只在圖靈和以後的GPU產品上有用,之前的GPU產品無法使用這項功能。

NGX的軟體架構

NGX的相關軟體架構和英偉達的硬體驅動緊密相連,並且和英偉達的雲端服務相關。簡單來說,英偉達的NGX API為遊戲和應用程序提供了AI訪問介面,這些功能已經被英偉達預先培訓好並且集成完成,應用程序能夠很輕鬆的將多個AI特性集成在裡面,然後GPU檢測到支持AI功能後就可以開始運行了。

具體到功能的話,GeForce用戶可以使用GeForce Experience軟體,Quadro用戶可以下載Quadro Experience。這兩個軟體下載並安裝後,會和NGX進行通訊,確定用戶的設備上存在的遊戲和應用程序和NGX的相關性,然後下載相應的DNN模型以供後續使用。

深度學習超級採樣DLSS

DLSS能帶來遠遠超過TAA的畫質,性能比TAA還要好出不少。

DLSS 2x和64倍SSAA畫質對比,幾乎完全相同。

DLSS有更為出色的時間穩定性和圖像清晰度,幾乎不會造成紋理模糊。

英偉達NGX的首個應用就是DLSS。目前大部分遊戲在渲染完成後都並非直接輸出至屏幕,而是需要進行一系列後處理。比如抗鋸齒功能,包含TAA時間抗鋸齒、FXAA快速自適應抗鋸齒等。但是這些抗鋸齒或者其他優化圖像的功能都存在問題,比如造成模糊、錯誤的處理圖形元素等。

對這種類型的問題而言,單純依賴演算法是不可能解決的。因為演算法不可能知道圖像中哪些東西是什麼。但是對AI來說,這是一個非常好的應用場合,通過AI的對電腦進行數萬、數十萬的訓練後,AI可以識別出不同的畫面元素,並且可以自動補充以產生高質量的圖形效果。

這就是DLSS工作的基本原理。根據英偉達的數據,他們先是收集了遊戲開啟了64倍全屏幕抗鋸齒的完美畫質作為參考圖樣,然後獲取正常渲染獲取的原始圖像,接下來訓練DLSS匹配完美畫質圖樣,通過每個輸入要求DLSS產生輸出,測量這些輸出和完美畫質圖樣之間的差距,並且根據差值調整網格權重,再多次迭代後,DLSS能夠輸出的畫面質量相比原始完美畫面已經非常接近了。這個時候DLSS就擁有了對某個應用程序畫面優化的穩定的模型。接下來用戶通過GFE等軟體下載這個模型,並將其通過圖靈GPU應用在自己對應的遊戲上,就能夠實現接近完美畫質的圖像。

除了上述標準DLSS功能外,英偉達還提供了DLSS2X功能,這種功能的輸入以最終目標解析度呈現,然後以更大的DLSS網路組合產生接近64倍超級採樣水平的輸出圖像,實現圖像質量的提升。

圖像修復

AI可以幫助用戶「腦補」缺失的圖像。

圖像修復功能有趣之處在於,它允許應用程序提供從現有圖像中刪除部分內容的功能,然後再使用NGX AI來將其補完。例如可以移除風景照片中的電線、合影照的路人等。一般來說,這種修復功能的最大問題在於如何確保修補的畫面真實性。NGX的方法是利用大量真實世界的圖像訓練獲得的模型,來實現內容的合成。從官方給出的例子來說,效果很不錯。

AI Slow-Mo和AI Super Rez

Super Rez技術能夠智能識別並創造新的像素,因此圖像銳利度要高很多。

AI Slow-Mo主要用於AI技術獎插值幀插入視頻流,以提供平滑的慢動作視頻。NGX通過分析特徵和對象幀,能夠自動識別對象和攝像機移動,創建新的插值幀。

AI Super Rez則可以通過AI技術將圖像的解析度提升2倍、4倍甚至8倍。和傳統的過濾、濾鏡等方法不同的是,AI Super Rez通過AI技術來識別圖像並智能的創造新的像素實現圖像的放大,者帶來圖像更銳利的放大,並且能夠正確的保留景深和各種細節。AI Super Rez另一個應用場景是視頻,視頻經過AI Super Rez放大,可以實現將1080p視頻放大至4K,PSNR值比傳統的雙三次插值高出1~2dB。

高級渲染技術

圖靈GPU除了光線追蹤和AI外,還帶來了一些高級渲染技術,這些技術都適用於光柵化渲染,畢竟目前光柵化依舊是3D實時渲染的主流。不過這些內容專業性過高,因此本文只是簡單介紹其中的內容。

網格著色Mesh Shading

現實世界的視覺極其豐富,比如布滿岩石的海灘,數目豐富的森林等。但是由於這些複雜場景存在太多的頂點信息,因此對系統造成了很大壓力。因為目前的計算流程每個對象都需要來自CPU的繪圖調用,如果是繪製單個對象,幾何著色器和曲面細分等非常有效,如果是複雜的多個對象,就對系統壓力很大了。

如此複雜的場景對系統來說頂點壓力極大。

Mesh Shading引入了全新的著色器,能夠對頂點實現自動的「批處理」。

在這個情況下,Mesh Shading引入了兩個新的著色器,任務著色器和網格著色器。這兩個新的著色器功能類似,但是具有更大的自由度。其中任務著色器能夠由開發人員定義其輸入和輸出,再由後者網格著色器以多線程的方式自主生成一大片三角形給光柵單元。因此現在開發人員可以直接向GPU發送一個包含多個物體的包,交由GPU一併處理完成,消除了CPU的瓶頸也簡化了開發流程。另外Mesh Shading還可以支持自動LOD技術,能夠在觀察者較遠的情況下降低頂點和細節,節約系統資源。

比率可變著色Varable Rate Shading

VRS功能可以在幾乎不損失畫質的情況下節約渲染資源。

內容自適應著色會根據場景情況,自動降低部分場景著色,節約資源。

比率可變著色是一種新的能夠實現著色比率控制的技術。它能夠對屏幕上由16x16個像素組成的區域進行著色比率變換,配之以七種不同的著色比率,並且還提供了三種可以使用VRS的演算法,分別是內容自適應著色、運動自適應著色和視網膜中央凹著色。這三種不同的著色方式分別對應著不同的應用場景。

其中內容自適應著色會降低前一幀細節較低的場景,比如天空、牆壁或者屋頂等;運動自適應著色會降低運動模糊範圍內的畫面,模糊後損失了太多細節,也沒有必要用全尺寸著色來體現;視網膜中央凹著色則是用於VR設備較多,對視網膜注意的中央部分提供高精度著色,其餘部分則降低精度。

在使用VRS和相應的演算法後,場景中不同內容受到不同比率的影響會降低著色倍數,因此能夠帶來一定的性能提升。對用戶來說,由於VRS功能將用戶不關注的區域的著色率降低,因此基本上不會帶來肉眼可見的畫面效果降低。

紋理空間著色Texture Space Shading

紋理空間著色的意義在於能夠以完全獨立的速率和獨立的坐標系統對紋理可見性和外觀進行採樣。

紋理空間著色是將著色數值通過動態計算並作為紋理空間中的紋理元素存儲起來,當像素被紋理映射時,對應的紋理元素就會被紋理查找操作進行採樣和過濾。通過這項技術,可以以完全獨立的速率和獨立的坐標系統對紋理可見性和外觀進行採樣。開發人員可以通過重新使用在分離的著色空間中已完成的著色計算提高質量和性能。

多視圖渲染MULTI-VIEW RENDERING

MVR技術主要用於節約在多視圖渲染情況下的資源,不用重複計算。

多視圖渲染可以讓開發人員從多個角度對場進行性繪製,甚至可以在一次中通過繪製不同姿勢的角色實現多個實例。圖靈硬體最多支持四個視圖,API級別支持最多32個視圖。在渲染多視圖版本時,圖靈架構可以通過單次操作完成幾何體的拾取和著色,能夠最佳化實現三角形及其相關頂點屬性的處理。這項技術實際上是帕斯卡架構的同步多投影技術技術的擴展。多視圖渲染多用於VR設備這樣的頭戴式顯示器,立體渲染中需要同時繪製兩個場景的對象,因此多視圖渲染在這裡大有可為。

不是總結的總結:圖靈架構會帶來什麼?

在介紹完圖靈的大部分功能之後,本文也到了尾聲。和所有的類似文章一樣,本文會在最後這一部分點評技術的重要性和對未來的影響,還會加入一些不一樣的思考。

從技術角度來說,圖靈架構和相關AI技術、光線追蹤技術在顯卡上的應用,的確可以稱之為數十年來GPU發展上最大的變革。上一次類似的變革發生在DirectX 10登場的時候,統一渲染架構的出現改變了GPU工作方式;再上一次則是DirectX8出現的時候,頂點和像素流水線的出現定義了現代GPU架構的基礎。圖靈的出現,在很大程度上定義了未來GPU的發展方向,也向業內初步展示了AI在圖形技術上的應用,這是具有開創性意義的偉大技術和產品。

除了顯卡本身之外,對英偉達來說,圖靈架構和相關產品的出現,可能是英偉達繼CUDA走入通用計算、押注AI轉型人工智慧之後的第三次轉折點。前兩次轉折點,英偉達都成功地擴大了自己的業務範圍,並且憑藉自己在通用計算和AI上一脈相承的投入,成為業內能夠和英特爾、高通等廠商鼎足而立的巨擘。

但是,這些轉型只能是英偉達在業務和產業上的轉型,本身公司的發展模式依舊是一個高科技軟硬體企業。圖靈架構則帶來了另一種可能,憑藉圖靈架構以及英偉達在遊戲業界的強勢地位,英偉達有可能向技術服務型廠商轉型。舉例來說,圖靈架構帶來的DLSS、InPainting、Super-Rez等功能,都是英偉達附加在遊戲卡上的服務性功能,再加上英偉達一直以來在推廣的雲遊戲,未來英偉達有可能在圖形處理、遊戲優化方面開闢一個新的天地。畢竟新的功能會帶來新的市場,新的市場又會誕生新的商業模式。

英偉達如果要想繼續前進一步,成為IBM、HP那樣的百年企業,很難說除了傳統的軟硬體業務之外,不對轉型為高科技AI服務提供商動心,畢竟現在英偉達在AI和CUDA等商業方面已經有大量的積累,依靠服務這種幾乎「無本萬利」的產業賺錢,要比辛辛苦苦做集成電路舒服多了,畢竟自己的技術壁壘和產業護城河已經初見成效了。

圖靈除了對英偉達本身的利好之外,對業內有什麼影響呢?有一句老話說得好,「早期的鳥兒有蟲吃」。英偉達在CUDA和AI上起得比較早,奠定了現在的地位,在GPU的AI應用和光線追蹤上,利用圖靈基本上為業內未來的發展打好了基礎,英偉達做了初一,後面的企業就很難做十五了,未來只有老老實實跟著英偉達的方向走,這對AMD來說,除了兼容英偉達目前給出的方向,幾乎沒有任何別的選擇。表面上大家都是支持微軟的方案,但是誰叫人家出的早呢,各種各樣的開發工具和軟體都會偏向英偉達,這對AMD和後來者英特爾來說,可不是太好的消息。

對消費者來說,圖靈架構的顯卡變得如此昂貴,是否應該購買呢?對這個問題可以分情況來看,如果是預算充裕的玩家,那自然是買買買。如果預算不充裕,又想體驗新技術應該怎麼辦?目前看來RTX2070的性價比還算可以,值得推薦。對絕大部分用戶而言,目前沒有這麼強烈的技術需求的話,建議大家也可以稍微等一等,因為目前的圖靈架構對應的產品,依舊是12nm工藝製造,雖然相對上代的16nm有一定改進,但畢竟不是新一代工藝。

7nm工藝的產品目前已經開始出樣,我們相信圖靈的下一代產品必定會採用7nm或同等工藝製造,相比16nm改進到12nm,7nm無論是功耗、晶元面積還是性能都有更好的表現。考慮到12nm工藝下的TU102的面積已經高達700平方毫米以上,我們認為7nm才應該是類似圖靈這種技術飛躍的最好「溫床」,其光線追蹤能力、AI計算能力、功耗等表現應該更上一層樓。並且新工藝後晶元面積縮小會帶來價格降低,那個時候似乎才是新技術向玩家大面積鋪開的時間。

早買早享受,但不一定真正有完整的支持,無論是業內研發人員還是英偉達,都才剛剛開始熟悉全新的技術。我們非常認可圖靈帶來的未來,一片大好,但如果你確實囊中羞澀的話,倒也並不急於一時,未來會更好!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 微型計算機 的精彩文章:

AMD CEO:遊戲GPU市場會繼續增長;蘋果回應「下架iPhone X」…
vivo X23發布:首發雙渦輪引擎,性能大漲,還有水滴屏和第四代屏幕指紋

TAG:微型計算機 |