您的位置:首頁>科技>正文

英偉達Volta架構:為深度學習而生的Tensor Core

機器之心報導

編輯:CZ、Jenny Huang、李澤南、吳攀、蔣思源

當地時間 5 月 8-11 日, 英偉達在加州聖約瑟舉行了 2017 年的 GPU 技術大會(GTC 2017)。 機器之心作為本次大會的特邀媒體, 也來到了現場, 參閱《現場報導 | 英偉達 GTC 大會開幕, 盤點首日三大亮點》。 昨天, 英偉達 CEO 黃仁勳在大會上正式發佈了目前最先進的加速器 NVIDIA Tesla V100。 之後, 英偉達開發博客又更新了一篇深度解讀文章, 剖析了 Tesla V100 背後的新一代架構 Volta, 其在提供了更好的高性能計算支援之外, 還增加了專門為深度學習所設計的 Tensor Core。 機器之心在本文中對這篇博客文章進行了編譯介紹, 同時還在文中加入了一些機器之心對英偉達應用深度學習研究副總裁 Bryan Catanzaro 的採訪內容。

在 2017 GPU 技術大會(GTC 2017)上, 英偉達 CEO 黃仁勳正式發佈了新一代處理器架構 Volta, 以及使用新架構的第一款設備——適用於深度學習任務的加速卡 Tesla V100, 英偉達將這塊顯卡稱為全球最先進的資料中心 GPU。

從語音辨識到訓練虛擬助理進行自然交流, 從探測車道線到讓汽車完全自動駕駛, 資料科學家們在技術的發展過程中正一步步攀登人工智慧的新高度。 而解決這些日益複雜的問題則需要日益複雜的深度學習模型, 為深度學習提供強大的計算硬體是英偉達努力的目標。

圖 1. Tesla V100 加速卡內含 Volta GV100 GPU, 以及 SXM2 Form Factor。

高性能計算設備(HPC)是現代科學的基礎, 從預測天氣、發明新藥到尋找新能源, 大型計算系統能為我們類比和預測世界的變化。 這也是英偉達在新一代 GPU 架構推出時選擇優先發佈企業級計算卡的原因。 黃仁勳在發佈會上表示, 全新的 Tesla V100 專為 HPC 和 AI 的融合而設計, 同時採用了具有突破性的新技術。 英偉達的新架構能否讓 GPU 再上一個臺階?讓我們隨著 Tesla V100 一探究竟。

揭秘新架構與 GPU 特性

Volta 並不是 Pascal 的升級, 而是一個全新的架構!——NVIDIA 應用深度學習研究副總裁 Bryan Catanzaro。

在 Nvdia GTC 2017 第三天下午, Nvidia CUDA 軟體首席工程師 Luke Durant 與 Nvidia 首席構架師 Oliver Giroux 進行了一個名為 Inside Volta 的技術講座, 解讀了 Volta 構架的設計。 此後機器之心作為不到五家受邀參與 Volta 深度採訪的亞洲媒體之一, 成為了第一批深入瞭解 Volta 與 Tesla V100 的機構。

英偉達認為, 硬體的可程式設計性正在驅動深度學習的發展。 談到 Volta 對人工智慧帶來的影響時, 英偉達副總裁 Bryan Catanzaro 表示, 「Volta 提供大量的 FLOP, 基於 Volta, 人們就可以使用需要更多 FLOP 的模型。 如今很多流行的模型都需要很大的計算資源, 例如卷積, 我個人認為架構上將會有一定的轉向, 既更多地來利用更多地利用我們已有的大量的 FLOP。 當然, 構架的進化也會經過一個『達爾文』過程, 最終最適應的會成為終極形態」

在本次 GTC 中, 我們沒有看到聯網移動端晶片的身影或為移動端人工智慧計算性能提升進行的構架設計, 關於這個問題, Volta 設計團隊表示, 對於可以聯網的設備, 通過 CPU 結合 GPU 的混合雲進行大量計算是必然趨勢;而對於無法聯網的應用場景,

SOC 是更好的選擇。

Tesla V100:人工智慧計算和 HPC 的助推器

毫無疑問, 全新的英偉達 Tesla V100 加速器是世界上性能最高的並行處理器, 旨在為計算量最大的 HPC 設備、人工智慧和圖形工作任務提供支援。 它的核心 GV100 GPU 包含 211 億個電晶體, 而晶片面積為前所未有的 815 平方毫米(Tesla GP100 為 610 平方毫米)。 它採用了台積電(TSMC)的 12nm FFN 專屬工藝打造。 與其前身 GP100 GPU 及其他 Pascal 架構的顯卡相比, GV100 提供了更強的計算性能, 並增加了許多新功能。 它進一步減小了 GPU 程式設計和應用程式移植難度, 也通過制程的升級提高了 GPU 資源利用率。 另外, GV 100 也是一款能效極高的處理器, 其在單位功耗的性能上表現卓越。 圖 2 給出了 ResNet-50 深度神經網路在 Tesla V100 上進行訓練的性能表現。

對於 12nm 制程的選擇(AMD 準備在 2018 年推出使用 7nm 制程的顯卡),英偉達的首席工程師表示他們已在功耗和性能之間做出了最佳選擇。

圖 2. Tesla V100 在 ResNet-50 深度神經網路訓練任務中的速度比 Tesla P100 快 2.4 倍。如果每張圖像的目標延遲是 7ms,那麼 Tesla V100 使用 ResNet-50 深度神經網路進行推理的速度比 P100 快 3.7 倍(參與測試的 V100 為原型卡)。

Tesla V100 的主要計算特徵包括:

為深度學習優化過的新型流式多處理器(SM)架構。Volta 對 GPU 核心的 SM 處理器架構進行了重要的重新設計。新的 Volta SM 架構比前代 Pascal 設計能效高 50%,在同樣的功率範圍下 FP32 和 FP64 性能有重大提升。新的 Tensor Core 是專門為深度學習設計的,為浮點運算速度帶來了 12 倍的提升。有了獨立的、並行的整型和浮點型資料通路,Volta SM 在負載上也更高效,混合了計算與地址運算。Volta 新的獨立執行緒調度能力使得平行線程之間的細細微性同步協同(finer-grain synchronization and cooperation)成為可能。最終,新型的 L1 Data Cache 與 Shared Memory 子系統的結合也能極大地提升性能,同時還簡化了程式設計。

第二代 NVLink。第二代英偉達 NVLink 高速互連技術能提供更高的頻寬、更多連接,同時還改進了多 GPU 和多 GPU/CPU 系統組態的延展性。

HBM2 顯存:更快、更高效。Volta 高度調整的 16GB HBM2 顯存子系統提供了 900 GB/s 的峰值顯存頻寬。來自三星的新一代 HBM2 顯存和 Volta 中的新一代顯存控制器的組合實現的顯存頻寬是 Pascal GP100 的 1.5 倍,而且在許多負載上的顯存頻寬效率更高。

Volta 多處理服務。Volta 多服務處理(MPS:Multi-Process Service)是 Volta GV100 的一項新特性,能夠為 CUDA MPS 伺服器的關鍵元件提供硬體加速,從而能為共用該 GPU 的多個計算應用提供更高的性能、隔離和更好的服務品質(QoS)。Volta MPS 還將 MPS 用戶端的最大數量從 Pascal 的 16 提升到了 Volta 的 48。

增強統一存儲和位址轉換服務。Volta GV100 中的 GV100 統一存儲(GV100 Unified Memory)技術包括新型訪問計數器,讓訪問網頁最頻繁的處理器能更準確的遷移存儲頁。

協作組(Cooperative Groups)和新的 Cooperative Launch API。協作組是 CUDA 9 中新的程式設計模型,用來組織通信執行緒組。Volta 增加了對新型同步模式的支援。

最大性能和最大效率模式。在最大性能模式下,Tesla V100 加速器將不受限制的把 TDP(熱設計功耗)水準提高到 300W,從而加速需要最快計算速度和最高資料吞吐的應用。最大效率模式下,資料中心管理員可以調整 Tesla V100 加速器的功率使用,從而用單位功耗下最優的性能進行運算。

為 Volta 優化過的軟體。Caffe2、MXNet、CNTK、TensorFlow 等這樣的深度學習框架的新版本,能夠利用 Volta 的性能來獲得更快的訓練速度、更高的多節點訓練性能。GPU 加速庫(比如 cuDNN、cuBLAS 等)的 Volta 優化版本利用 Volta GV100 架構的新特性能為深度學習和高性能計算應用提供更高的性能。

GV100 GPU 硬體架構

裝備有 Volta GV100 GPU 的英偉達 Tesla V100 加速器是目前世界上速度最快的平行計算處理器。GV100 的硬體創新十分顯著,除了為 HPC 系統和應用提供遠比現在更強的計算能力(如圖 3 所示)之外,它還可以大大加快深度學習演算法和框架的運行速度。

圖 3:在各種 HPC 任務中,Tesla V100 平均比 Tesla P100 快 1.5 倍。(該性能基於 Tesla V100 原型卡)

Tesla V100 可以提供業界領先的浮點和整型計算性能。峰值計算速度(基於 GPU Boost 時鐘頻率):

雙精度浮點(FP64)運算性能:7.5 TFLOP/s;

單精確度(FP32)運算性能:15 TFLOP/s;

混合精度矩陣乘法和累加:120 Tensor TFLOP/s。

與前一代 Pascal GP100 GPU 類似,GV100 GPU 由多個圖形處理集群(Graphics Processing Cluster,GPC)、紋理處理集群(Texture Processing Cluster,TPC)、流式多處理器(Streaming Multiprocessor,SM)以及記憶體控制器組成。一個完整的 GV100 GPU 由 6 個 GPC、84 個 Volta SM、42 個 TPC(每個 TPC 包含了 2 個 SM)和 8 個 512 位元的記憶體控制器(共 4096 位)。每個 SM 有 64 個 FP32 核、64 個 INT32 核、32 個 FP64 核與 8 個全新的 Tensor Core。同時,每個 SM 也包含了 4 個紋理處理單元。

圖 4:帶有 84 個 SM 單元的完整 Volta GV100。

加上 84 個 SM,一個完整的 GV100 GPU 總共有 5376 個 FP32 核、5376 個 INT32 核、2688 個 FP64 核、672 個 Tensor Core 與 336 個紋理單元。每塊記憶體控制器都連接了一個 768 KB 的 2 級緩存,每個 HBM2 DRAM 堆疊都由一對記憶體控制器控制。一個完整的 GV100 GPU 包括了總共 6144 KB 的二級緩存。圖 4 展示了一個帶有 84 個 SM 單元的完整 GV100 GPU(不同產品可以使用不同的 GV100 配置)。Tesla V100 加速器使用了 80 個 SM 單元。

表 1. Tesla V100 與過去五年歷代 Tesla 加速器的參數對比

Volta SM(流式多處理器)

為提供更高的性能而設計的架構,Volta SM 比過去的 SM 設計有更低的指令與緩存延遲,也包括加速深度學習應用的新特性。

主要特性包括:

為深度學習矩陣計算建立的新型混合精度 FP16/FP32 Tensor Core。

為更高的性能、更低的延遲而增強的 L1 資料緩存。

為更簡單的解碼而改進的指令集,並減少了指令延遲。

更高的速度和能效。

圖 5: Volta GV100 SM

Tensor Core:深度學習專用核心

新的 Tensor Core 是 Volta GV100 最重要的特徵,有助於提高訓練神經網路所需的性能。Tesla V100 的 Tensor Core 能夠為訓練、推理應用的提供 120 Tensor TFLOPS。相比於在 P100 FP 32 上,在 Tesla V100 上進行深度學習訓練有 12 倍的峰值 TFLOPS 提升。而在深度學習推理能力上,相比於 P100 FP16 運算,有了 6 倍的提升。Tesla V100 GPU 包含 640 個 Tensor Core:每個流式多處理器(SM)包含 8 個。

Tensor Core 非常省電,電力消耗大有可能將不再是深度學習的一大瓶頸。Bryan Catanzaro 表示:「通過底層數學計算的優化,Tensor Core 相較之前的構架要省電很多。深度學習的一個重要的限制是 energy efficiency,Tensor Core 在解決這個問題的方面相當突出。」

矩陣-矩陣乘法運算(BLAS GEMM)是神經網路訓練和推理的核心,被用來獲得輸入資料和權重的大型矩陣的乘積。如下圖 6 所示,相比於基於 Pascal 的 GP100,Tesla V100 中的 Tensor Core 把這些運算的性能提升了至少 9 倍。

圖 6:Tesla V100 Tensor Core 和 CUDA 9 對 GEMM 運算有了 9 倍的性能提升。(在 Tesla V100 樣機上使用預發佈的 CUDA 9 軟體進行的測試)

Tensor Core 和與它們關聯的資料通道進行了精心的定制,從而極大地提升了極小區域和能量成本下浮點計算的輸送量。它也廣泛地使用了時鐘門控來盡可能節能。

每個 Tensor Core 包含一個 4x4x4 的矩陣處理陣列來完成 D=A x B + C 的運算,其中 A、B、C、D 是 4×4 的矩陣,如下圖 7 中所示。矩陣相乘的輸入 A 和 B 是 FP16 矩陣,相加矩陣 C 和 D 可能是 FP16 矩陣或 FP32 矩陣。

圖 7:Tensor Core 的 4x4x4 矩陣乘法與累加。

每個 Tensor Core 每個時鐘可執行 64 次浮點 FMA 混合精度運算(FP16 乘法與 FP32 累加),一個 SM 單元中的 8 個 Tensor Core 每個時鐘可執行共計 1024 次浮點運算。相比於使用標準 FP32 計算的 Pascal GP100 而言,單個 SM 下的每個深度學習應用的輸送量提升了 8 倍,所以這最終使得 Volta V100 GPU 相比於 Pascal P100 GPU 的輸送量一共提升了 12 倍。Tensor Core 在與 FP32 累加結合後的 FP16 輸入資料之上操作。FP16 的乘法得到了一個全精度結果,該結果在 FP32 和其他給定的 4x4x4 矩陣乘法點積的乘積運算之中進行累加。如圖 8 所示。

圖 8. Volta GV100 Tensor Core 流程圖

在程式執行期間,多個 Tensor Core 通過一組 warp 執行緒的執行而同時使用。warp 內的執行緒提供了 Tensor Core 來處理大型 16×16×16 矩陣運算。CUDA 將這些操作作為 Warp-Level 矩陣運算在 CUDA C++ API 中公開。這些 C++介面提供了專門化的矩陣負載,如矩陣乘法和累加,矩陣存儲操作可以有效地利用 CUDA C++程式中的 Tensor Core。

除 CUDA C++介面可直接程式設計 Tensor Core 外,CUDA 9 cuBLAS 和 cuDNN 庫還包含了使用 Tensor Core 開發深度學習應用和框架的新庫介面。英偉達已經和許多流行的深度學習框架(如 Caffe2 和 MXNet)合作以使用 Tensor Core 在 Volta 架構的 GPU 系統上進行深度學習研究。英偉達將繼續與其他框架開發人員合作以便在整個深度學習生態系統更廣泛地使用 Tensor Core。

增強的 L1 資料緩存和共用顯存

Volta SM 的 L1 資料緩存和共用顯存子系統的組合能顯著提高性能,同時也簡化了程式設計並減少了達到或接近峰值應用性能所需的時間成本。

在共用顯存塊中進行集成可確保 Volta GV100 L1 緩存具有比過去英偉達 GPU 中的 L1 快取記憶體更低的延遲和更高的頻寬。L1 Volta 作為流式資料的高輸送量導管(conduit),同時為經常複用的資料提供高頻寬和低延遲訪問,這兩個性能都是目前最好的。英偉達表示,這一特性是 Volta 獨有的,其提供比以往更強大的性能。

圖 9. 在 Volta 上,這些代碼在沒有使用共用顯存的情況下只有 7%的性能損失,而 Pascal 的性能下降了 30%。雖然共用顯存仍然是最佳選擇,但新 Volta L1 設計使程式師能夠以更少的程式設計工作而快速獲得足夠出色的性能。

表 2. 全新 GV100 與此前各代架構 GPU 的形式比較,GV100 GPU 支持全新的 Compute Capability 7.0。

獨立的執行緒調配

Volta 架構旨在設計為比以前的 GPU 更容易程式設計,令用戶能在更複雜和多樣的應用程式上高效地工作。Volta GV100 是第一款支持獨立執行緒調配的 GPU,其在平行線程指令中可以實現細細微性(finer-grain)的同步和協作。Volta 主要的設計目標是減少在 GPU 中運行指令所需的工作量,並在執行緒合作中實現更大的靈活度,這樣從而為細細微性平行算法提供更高的效率。

英偉達同時也展示了他們如何對 SIMT(單指令多執行緒)做出重大改進以推進 Volta 架構。32 執行緒內單個獨立的 CUDA 核現在只有有限的自主性;執行緒現在可以在一個細細微性層面上進行同步,並且仍然處於 SIMT 範式下,所以這就意味著更高的整體效率。更重要的是,獨立的執行緒現在可以放棄再重新安排在一起。這就意味著英偉達的 GPU 有一定數量的調度硬體(scheduling hardware)。

圖 10:Pascal 和早期的英偉達 GPU 在 SIMT warp 執行模式下的執行緒調配。大寫字母代表指令偽代碼中的語句。在一個 warp 中不同的分支是序列化的,這樣在分支一邊的所有語句一起執行以在另一邊語句執行前完成。在 else 語句後,warp 中的執行緒通常會重新映射。

圖 11:Volta(下方)獨立執行緒調配架構圖與 Pascal 和早期的架構(上方)相比較。Volta 會維持每個執行緒調配的資源,就像程式計數器(PC)和調用堆疊(S)那樣,而早期的架構以每個 warp 為單位維持。

圖 12:Volta 獨立執行緒調配令其可以交叉執行發散分支(divergent branches)的語句。這就允許執行細細微性平行算法,而 warp 內的執行緒也就能同步和通信。

圖 13:程式可以使用顯式同步來重新令 warp 中的執行緒收斂

圖 14:具有細細微性鎖(fine-grained locks)的雙向鏈表。在插入結點 B 到鏈表(右)前,需要獲取每一個結點鎖(左)

總結

根據目前公佈的數位,Tesla V100 可以提供 15 TFLOPS 的 FP32、30 TFLOPS FP16、7.5 TFLOPS FP64 和高達 120 TFLOPS 的專用 Tensor 運算性能。由於 1455 MHz 的峰值運算速度,它相比前一代的 CUDA 理論 FLOPS 資料增長了 42%。Tesla V100 配備了 16G 的 HBM2 顯存,它的記憶體時鐘速度從 1.4 Gbps 提升至 1.75 Gbps,提升了 25%。

在 GTC 大會上,黃仁勳表示英偉達在研發 Tesla GV100 的過程中投入了 30 億美元的鉅資,這是迄今為止英偉達投資最大的單個項目。第一塊量產型加速卡預計將在今年第三季度通過新一代超算模組 DGX-1V 的形式進入市場,售價不菲(DGX-1V 售價 149,000 美元,內含 8 塊 Tesla V100,換算下來每塊 V100 約為 18,000 美元)。但因為其強大的計算能力,屆時必將出現不少買家。

對於 12nm 制程的選擇(AMD 準備在 2018 年推出使用 7nm 制程的顯卡),英偉達的首席工程師表示他們已在功耗和性能之間做出了最佳選擇。

圖 2. Tesla V100 在 ResNet-50 深度神經網路訓練任務中的速度比 Tesla P100 快 2.4 倍。如果每張圖像的目標延遲是 7ms,那麼 Tesla V100 使用 ResNet-50 深度神經網路進行推理的速度比 P100 快 3.7 倍(參與測試的 V100 為原型卡)。

Tesla V100 的主要計算特徵包括:

為深度學習優化過的新型流式多處理器(SM)架構。Volta 對 GPU 核心的 SM 處理器架構進行了重要的重新設計。新的 Volta SM 架構比前代 Pascal 設計能效高 50%,在同樣的功率範圍下 FP32 和 FP64 性能有重大提升。新的 Tensor Core 是專門為深度學習設計的,為浮點運算速度帶來了 12 倍的提升。有了獨立的、並行的整型和浮點型資料通路,Volta SM 在負載上也更高效,混合了計算與地址運算。Volta 新的獨立執行緒調度能力使得平行線程之間的細細微性同步協同(finer-grain synchronization and cooperation)成為可能。最終,新型的 L1 Data Cache 與 Shared Memory 子系統的結合也能極大地提升性能,同時還簡化了程式設計。

第二代 NVLink。第二代英偉達 NVLink 高速互連技術能提供更高的頻寬、更多連接,同時還改進了多 GPU 和多 GPU/CPU 系統組態的延展性。

HBM2 顯存:更快、更高效。Volta 高度調整的 16GB HBM2 顯存子系統提供了 900 GB/s 的峰值顯存頻寬。來自三星的新一代 HBM2 顯存和 Volta 中的新一代顯存控制器的組合實現的顯存頻寬是 Pascal GP100 的 1.5 倍,而且在許多負載上的顯存頻寬效率更高。

Volta 多處理服務。Volta 多服務處理(MPS:Multi-Process Service)是 Volta GV100 的一項新特性,能夠為 CUDA MPS 伺服器的關鍵元件提供硬體加速,從而能為共用該 GPU 的多個計算應用提供更高的性能、隔離和更好的服務品質(QoS)。Volta MPS 還將 MPS 用戶端的最大數量從 Pascal 的 16 提升到了 Volta 的 48。

增強統一存儲和位址轉換服務。Volta GV100 中的 GV100 統一存儲(GV100 Unified Memory)技術包括新型訪問計數器,讓訪問網頁最頻繁的處理器能更準確的遷移存儲頁。

協作組(Cooperative Groups)和新的 Cooperative Launch API。協作組是 CUDA 9 中新的程式設計模型,用來組織通信執行緒組。Volta 增加了對新型同步模式的支援。

最大性能和最大效率模式。在最大性能模式下,Tesla V100 加速器將不受限制的把 TDP(熱設計功耗)水準提高到 300W,從而加速需要最快計算速度和最高資料吞吐的應用。最大效率模式下,資料中心管理員可以調整 Tesla V100 加速器的功率使用,從而用單位功耗下最優的性能進行運算。

為 Volta 優化過的軟體。Caffe2、MXNet、CNTK、TensorFlow 等這樣的深度學習框架的新版本,能夠利用 Volta 的性能來獲得更快的訓練速度、更高的多節點訓練性能。GPU 加速庫(比如 cuDNN、cuBLAS 等)的 Volta 優化版本利用 Volta GV100 架構的新特性能為深度學習和高性能計算應用提供更高的性能。

GV100 GPU 硬體架構

裝備有 Volta GV100 GPU 的英偉達 Tesla V100 加速器是目前世界上速度最快的平行計算處理器。GV100 的硬體創新十分顯著,除了為 HPC 系統和應用提供遠比現在更強的計算能力(如圖 3 所示)之外,它還可以大大加快深度學習演算法和框架的運行速度。

圖 3:在各種 HPC 任務中,Tesla V100 平均比 Tesla P100 快 1.5 倍。(該性能基於 Tesla V100 原型卡)

Tesla V100 可以提供業界領先的浮點和整型計算性能。峰值計算速度(基於 GPU Boost 時鐘頻率):

雙精度浮點(FP64)運算性能:7.5 TFLOP/s;

單精確度(FP32)運算性能:15 TFLOP/s;

混合精度矩陣乘法和累加:120 Tensor TFLOP/s。

與前一代 Pascal GP100 GPU 類似,GV100 GPU 由多個圖形處理集群(Graphics Processing Cluster,GPC)、紋理處理集群(Texture Processing Cluster,TPC)、流式多處理器(Streaming Multiprocessor,SM)以及記憶體控制器組成。一個完整的 GV100 GPU 由 6 個 GPC、84 個 Volta SM、42 個 TPC(每個 TPC 包含了 2 個 SM)和 8 個 512 位元的記憶體控制器(共 4096 位)。每個 SM 有 64 個 FP32 核、64 個 INT32 核、32 個 FP64 核與 8 個全新的 Tensor Core。同時,每個 SM 也包含了 4 個紋理處理單元。

圖 4:帶有 84 個 SM 單元的完整 Volta GV100。

加上 84 個 SM,一個完整的 GV100 GPU 總共有 5376 個 FP32 核、5376 個 INT32 核、2688 個 FP64 核、672 個 Tensor Core 與 336 個紋理單元。每塊記憶體控制器都連接了一個 768 KB 的 2 級緩存,每個 HBM2 DRAM 堆疊都由一對記憶體控制器控制。一個完整的 GV100 GPU 包括了總共 6144 KB 的二級緩存。圖 4 展示了一個帶有 84 個 SM 單元的完整 GV100 GPU(不同產品可以使用不同的 GV100 配置)。Tesla V100 加速器使用了 80 個 SM 單元。

表 1. Tesla V100 與過去五年歷代 Tesla 加速器的參數對比

Volta SM(流式多處理器)

為提供更高的性能而設計的架構,Volta SM 比過去的 SM 設計有更低的指令與緩存延遲,也包括加速深度學習應用的新特性。

主要特性包括:

為深度學習矩陣計算建立的新型混合精度 FP16/FP32 Tensor Core。

為更高的性能、更低的延遲而增強的 L1 資料緩存。

為更簡單的解碼而改進的指令集,並減少了指令延遲。

更高的速度和能效。

圖 5: Volta GV100 SM

Tensor Core:深度學習專用核心

新的 Tensor Core 是 Volta GV100 最重要的特徵,有助於提高訓練神經網路所需的性能。Tesla V100 的 Tensor Core 能夠為訓練、推理應用的提供 120 Tensor TFLOPS。相比於在 P100 FP 32 上,在 Tesla V100 上進行深度學習訓練有 12 倍的峰值 TFLOPS 提升。而在深度學習推理能力上,相比於 P100 FP16 運算,有了 6 倍的提升。Tesla V100 GPU 包含 640 個 Tensor Core:每個流式多處理器(SM)包含 8 個。

Tensor Core 非常省電,電力消耗大有可能將不再是深度學習的一大瓶頸。Bryan Catanzaro 表示:「通過底層數學計算的優化,Tensor Core 相較之前的構架要省電很多。深度學習的一個重要的限制是 energy efficiency,Tensor Core 在解決這個問題的方面相當突出。」

矩陣-矩陣乘法運算(BLAS GEMM)是神經網路訓練和推理的核心,被用來獲得輸入資料和權重的大型矩陣的乘積。如下圖 6 所示,相比於基於 Pascal 的 GP100,Tesla V100 中的 Tensor Core 把這些運算的性能提升了至少 9 倍。

圖 6:Tesla V100 Tensor Core 和 CUDA 9 對 GEMM 運算有了 9 倍的性能提升。(在 Tesla V100 樣機上使用預發佈的 CUDA 9 軟體進行的測試)

Tensor Core 和與它們關聯的資料通道進行了精心的定制,從而極大地提升了極小區域和能量成本下浮點計算的輸送量。它也廣泛地使用了時鐘門控來盡可能節能。

每個 Tensor Core 包含一個 4x4x4 的矩陣處理陣列來完成 D=A x B + C 的運算,其中 A、B、C、D 是 4×4 的矩陣,如下圖 7 中所示。矩陣相乘的輸入 A 和 B 是 FP16 矩陣,相加矩陣 C 和 D 可能是 FP16 矩陣或 FP32 矩陣。

圖 7:Tensor Core 的 4x4x4 矩陣乘法與累加。

每個 Tensor Core 每個時鐘可執行 64 次浮點 FMA 混合精度運算(FP16 乘法與 FP32 累加),一個 SM 單元中的 8 個 Tensor Core 每個時鐘可執行共計 1024 次浮點運算。相比於使用標準 FP32 計算的 Pascal GP100 而言,單個 SM 下的每個深度學習應用的輸送量提升了 8 倍,所以這最終使得 Volta V100 GPU 相比於 Pascal P100 GPU 的輸送量一共提升了 12 倍。Tensor Core 在與 FP32 累加結合後的 FP16 輸入資料之上操作。FP16 的乘法得到了一個全精度結果,該結果在 FP32 和其他給定的 4x4x4 矩陣乘法點積的乘積運算之中進行累加。如圖 8 所示。

圖 8. Volta GV100 Tensor Core 流程圖

在程式執行期間,多個 Tensor Core 通過一組 warp 執行緒的執行而同時使用。warp 內的執行緒提供了 Tensor Core 來處理大型 16×16×16 矩陣運算。CUDA 將這些操作作為 Warp-Level 矩陣運算在 CUDA C++ API 中公開。這些 C++介面提供了專門化的矩陣負載,如矩陣乘法和累加,矩陣存儲操作可以有效地利用 CUDA C++程式中的 Tensor Core。

除 CUDA C++介面可直接程式設計 Tensor Core 外,CUDA 9 cuBLAS 和 cuDNN 庫還包含了使用 Tensor Core 開發深度學習應用和框架的新庫介面。英偉達已經和許多流行的深度學習框架(如 Caffe2 和 MXNet)合作以使用 Tensor Core 在 Volta 架構的 GPU 系統上進行深度學習研究。英偉達將繼續與其他框架開發人員合作以便在整個深度學習生態系統更廣泛地使用 Tensor Core。

增強的 L1 資料緩存和共用顯存

Volta SM 的 L1 資料緩存和共用顯存子系統的組合能顯著提高性能,同時也簡化了程式設計並減少了達到或接近峰值應用性能所需的時間成本。

在共用顯存塊中進行集成可確保 Volta GV100 L1 緩存具有比過去英偉達 GPU 中的 L1 快取記憶體更低的延遲和更高的頻寬。L1 Volta 作為流式資料的高輸送量導管(conduit),同時為經常複用的資料提供高頻寬和低延遲訪問,這兩個性能都是目前最好的。英偉達表示,這一特性是 Volta 獨有的,其提供比以往更強大的性能。

圖 9. 在 Volta 上,這些代碼在沒有使用共用顯存的情況下只有 7%的性能損失,而 Pascal 的性能下降了 30%。雖然共用顯存仍然是最佳選擇,但新 Volta L1 設計使程式師能夠以更少的程式設計工作而快速獲得足夠出色的性能。

表 2. 全新 GV100 與此前各代架構 GPU 的形式比較,GV100 GPU 支持全新的 Compute Capability 7.0。

獨立的執行緒調配

Volta 架構旨在設計為比以前的 GPU 更容易程式設計,令用戶能在更複雜和多樣的應用程式上高效地工作。Volta GV100 是第一款支持獨立執行緒調配的 GPU,其在平行線程指令中可以實現細細微性(finer-grain)的同步和協作。Volta 主要的設計目標是減少在 GPU 中運行指令所需的工作量,並在執行緒合作中實現更大的靈活度,這樣從而為細細微性平行算法提供更高的效率。

英偉達同時也展示了他們如何對 SIMT(單指令多執行緒)做出重大改進以推進 Volta 架構。32 執行緒內單個獨立的 CUDA 核現在只有有限的自主性;執行緒現在可以在一個細細微性層面上進行同步,並且仍然處於 SIMT 範式下,所以這就意味著更高的整體效率。更重要的是,獨立的執行緒現在可以放棄再重新安排在一起。這就意味著英偉達的 GPU 有一定數量的調度硬體(scheduling hardware)。

圖 10:Pascal 和早期的英偉達 GPU 在 SIMT warp 執行模式下的執行緒調配。大寫字母代表指令偽代碼中的語句。在一個 warp 中不同的分支是序列化的,這樣在分支一邊的所有語句一起執行以在另一邊語句執行前完成。在 else 語句後,warp 中的執行緒通常會重新映射。

圖 11:Volta(下方)獨立執行緒調配架構圖與 Pascal 和早期的架構(上方)相比較。Volta 會維持每個執行緒調配的資源,就像程式計數器(PC)和調用堆疊(S)那樣,而早期的架構以每個 warp 為單位維持。

圖 12:Volta 獨立執行緒調配令其可以交叉執行發散分支(divergent branches)的語句。這就允許執行細細微性平行算法,而 warp 內的執行緒也就能同步和通信。

圖 13:程式可以使用顯式同步來重新令 warp 中的執行緒收斂

圖 14:具有細細微性鎖(fine-grained locks)的雙向鏈表。在插入結點 B 到鏈表(右)前,需要獲取每一個結點鎖(左)

總結

根據目前公佈的數位,Tesla V100 可以提供 15 TFLOPS 的 FP32、30 TFLOPS FP16、7.5 TFLOPS FP64 和高達 120 TFLOPS 的專用 Tensor 運算性能。由於 1455 MHz 的峰值運算速度,它相比前一代的 CUDA 理論 FLOPS 資料增長了 42%。Tesla V100 配備了 16G 的 HBM2 顯存,它的記憶體時鐘速度從 1.4 Gbps 提升至 1.75 Gbps,提升了 25%。

在 GTC 大會上,黃仁勳表示英偉達在研發 Tesla GV100 的過程中投入了 30 億美元的鉅資,這是迄今為止英偉達投資最大的單個項目。第一塊量產型加速卡預計將在今年第三季度通過新一代超算模組 DGX-1V 的形式進入市場,售價不菲(DGX-1V 售價 149,000 美元,內含 8 塊 Tesla V100,換算下來每塊 V100 約為 18,000 美元)。但因為其強大的計算能力,屆時必將出現不少買家。

Next Article
喜欢就按个赞吧!!!
点击关闭提示