5120顆CUDA!Nvidia正式發布Tesla V100計算卡
815mm^2!簡直就是驚了!
GPU Architect at NVIDIA
老黃在 GTC 2017 上發佈了 Nvidia 新一代的 GPU 架構 Volta,以及一塊巨無霸(815 mm²)晶片 GV100。
與以往不同的是,這一代架構設計把更多的精力放在了提高深度學習的性能上,幾乎所有的新特性都與之有關。
Tensor Core
作為 Volta 最主要的新特性,Tensor Core 的加入使兩個 4 x 4 大小的矩陣乘法運算可以在一個週期內完成,相當於 4 x 4 x 4 = 64 個乘加運算,也就是說單個 SM 達到了 1024 FLOPS 的理論性能。
這樣設計背後的邏輯是更多的提高資料在 datapath 中的複用。設想若按照順序依次計算這兩個 4 x 4 矩陣中的每一個元素,則一共需要 64 x 2 = 128 次寄存器讀寫。但若將其設計成一條指令,則只需要 4 x 4 = 16 次寄存器讀寫(假設兩個 FP16 被打包在一個 FP32 寄存器中)。
首先受益於 Tensor Core 的用戶,是各位正在苦逼 “煉丹” 的人工智慧科學家們,既然可以大幅減少深度學習的訓練時間,等於人生的有效時間又多了幾年。
可配置的 L1 Cache 和 Shared Memory
早期的 Kepler 架構中一個頗為好用的特性就是 CUDA 程式師可以根據應用特點,自行配製 L1 Cache 和 Shared Memory 的大小。在 Volta 架構中,我們又重新引入這個特性,並且將兩者的總大小做到了 128 KB。相信這對於有 Transpose,Histogram 需求的應用,或者嚴重依賴 L1 cache 命中率的應用都會帶來不小的提高。
獨立的執行緒調度
SIMT(Single instruction, multiple threads)模型中一個被經常詬病的問題是,若一個 Warp 內的執行緒發生了 ”分道揚鑣“ (control flow diverge)的情況,往往會產生意想不到的鎖死,且執行緒之間也一直無法細細微性的同步(synchronization)或搶佔(preemption)。
作為 Volta 的 Soul 之一,Thread-Is-A-Thread 的特性讓每一個執行緒都有了自己的 PC 和 Call Stack,從程式設計模型上變得更加接近 MIMD(Multiple Instruction, Multiple Data)。
一個典型的應用場景是 32 個執行緒併發的往一個鏈表中插入節點,得益于 Thread-Is-A-Thread,未來我們可以在 GPU 上執行如下的代碼,且不用擔心各種未知的鎖死。
__device__ void insert_after(Node *a, Node *b)
{
Node *c;
lock(a); lock(a->next);
c = a->next;
a->next = b;
b->prev = a;
b->next = c;
c->prev = b;
unlock(c); unlock(a);
}
寫在最後
Volta 架構的推出意味著 Nvidia 越來越重視其 GPU 上通用計算(深度學習)的性能,以期打開人工智慧計算市場。從股價上的回饋來看,投資者們也很看好這一路線。
Nvidia 上海 Compute Arch 組作為這一領域的重要的團隊之一,參與了這一次 Volta 架構的整個設計及驗證環節,歡迎更多有志於深度學習以及體系結構設計的同學加入我們。詳情請參考:[上海] NVIDIA Computing Architecture 組招聘
計算機圖形學、C++、編程 話題的優秀回答者
晶體管多就是粗暴,大力出奇蹟啊!
應用多用什麼,我們就在硬件上實現什麼,這妥妥地是做DSP的思路啊!
高性能計算,異構計算,x86,ARM,GPU,高性能嵌入式系統
基本上乾掉了絕大多數AI芯片startup… tensor core的絕對性能處理矩陣運算,通用gpu部分處理其它運算,還有大內存大帶寬加持,各方面都沒有太多短板。google的tpu和它比更像個半成品…
更多討論請見 https://www.zhihu.com/question/59680681