通用計算,再臨
即使半導體晶片還是能隨著摩爾定律(Moore’s Law)的腳步改進製程,能在同樣的面積裡塞進更多的半導體元件,但是因為現代硬體製造技術的限制,單一元件的耗電量難以下降,傳統的通用型處理器例如中央處理器(CPU)、圖形處理器(GPU),在不增加供電的前提下,透過製程進步能獲得的效率提昇相當有限。現在的電腦系統也因此從早期追求頻率更高的處理器的設計,轉為提供更多為特定應用設計(application-specific)的硬體加速器(hardware accelerators)。例如Google在雲端伺服器上加入的張量處理器(Tensor Processing Units, TPUs)、Pixel手機上的邊緣張量處理器(Edge TPUs)、Apple的類神經引擎(Neural Engines)、NVIDIA的張量核心(Tensor Cores),都是為了人工智慧(AI)、機器學習(ML)以及類神經網路(NN)而設計的特殊功能加速器。而為了在遊戲及電影達到更好的光影效果,NVIDIA的GPU上也加入為了光影追蹤(Ray Tracing)而打造的RT Cores。就連Intel最新一代的處理器上,也多了所謂的高斯類神經加速器(Gaussian & Neural Accelerators)。 距今約20年前,所謂的GPU,也就真的只是單純的圖學加速器,專門為了加速遊戲畫面成像或是影像創作需求而打造的。而今,在各種程式開發環境、工具、系統軟體的加持以及GPU本身硬體架構的改進下,GPU已經成為了能廣泛支援各式各樣需要大量平行計算應用程式的向量處理器(Vector Processors)了。也因為在GPU上實現「通用計算」(GPGPU)的可能性,直接導致了近代類神經網路的復興。 回想GPU的故事,再看看當今百家爭鳴的硬體加速器,不禁讓人好奇,當中是不是有哪種能夠重演GPU成為通用型處理器的輝煌歷史呢? 勝投候選人 目前已經有不少研究著手於利用這些加速器的功能來改善原本用途以外的應用程式的效能。而在已經商用化的加速器當中,又以TPU、Tensor Cores、RT Cores最受注目。 TPUs TPU是Google推出專為AI/ML/NN的應用打造的加速器,自從2016年之後開始在Google Cloud大量應用,其主要的核心設計則首見於他們在ISCA 2017所發表的論文。由於這是Google的祕密武器,目前Cloud TPU只能透過Google的雲端服務使用。除了雲端版本的Cloud TPU,Google另外也推出了所謂的邊緣計算用TPU(Edge TPUs)。Edge TPUs有給嵌入式系統用的單晶片版本、也有USB、M.2加速器的版本、也有整合在Pixel 6的處理器中的版本,可應用的平台跟範圍更是廣泛、也更容易取得。然而不論是Cloud TPU或是Edge TPU,他們都是以一次能夠直接對矩陣(Matrix)計算的目標而設計。而能夠對矩陣所做的運算功能,則是以AI/ML/NN應用所倚賴的卷積(convolution)、完全連接(fully connected)這類的計算為主。 儘管TPU只提供這些高度為AI/ML/NN所設計的運算功能,許多研究者以及Google自家的工程師們,也開始利用TPU加速像是資料庫查詢的連接(Join)功能、快速傅立葉轉換[Lu ISBI’21, Lu HPEC’20]、以及蒙地卡羅物理模擬[Morningstar, Pederson]。而筆者自家的lab,也在GPTPU這篇論文中,展現了利用Edge TPU加速一般的矩陣乘法、高斯消去法、LU分解等常用的矩陣代數計算。 Tensor Cores Tensor Cores是NVIDIA拿來與Google相庭抗禮的AI/ML/NN解決方案。雖然同樣都以直接處理矩陣資料為主軸,Tensor Cores支援的運算只有矩陣相乘一種。但是相較於Google TPU系列相當不透明的低階硬體介面,NVIDIA至少大方地提供了WMMA介面以及一堆像是cuBLAS這樣的函式庫(library)。同時更因為矩陣相乘的應用廣泛,利用Tensor Cores加速非AI/ML/NN應用程式的例子也不在少見。例如加速資料庫處理[Dakkak ICS’19, TCUDB]、快速傅立葉轉換[tcFFT, Durrani PACT’21],甚至是加解密演算法。 光影追蹤加速器(RT Cores) RT Cores也是NVIDIA在最新幾代GPU上提供的加速器。RT Cores著眼於遊戲、特效中讓場景更逼真的Ray … Read more通用計算,再臨