在多核異構(gòu)的時(shí)代,軟件人員普遍面臨的一個(gè)困惑是,面對(duì)如此復(fù)雜的系統(tǒng),應(yīng)該如何部署我們的算法,是應(yīng)該讓它運(yùn)行在CPU,GPU還是甚至類(lèi)似TPU的專(zhuān)門(mén)ASIC上才是最佳方案?另外給定特定的計(jì)算平臺(tái),我們的算法實(shí)現(xiàn)是不是已經(jīng)榨干硬件平臺(tái)的最大能力,還有沒(méi)有進(jìn)一步改善的空間?這些問(wèn)題尋尋覓覓答案,真像霧里看花,我們渴望有一雙慧眼,幫我們穿透迷津。
在衡量計(jì)算效能的正確姿勢(shì)我們提到了內(nèi)存帶寬(memory bandiwidth)和以FLOPS為代表的算力是可以很好的刻畫(huà)計(jì)算平臺(tái)的兩個(gè)指標(biāo)。同時(shí)既然是要衡量算法的性能自然我們也要考慮算法的特性?;诖?,論文《Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures》提出了Roofline模型,試圖對(duì)硬件和軟件通盤(pán)考慮,從而提出改善性能的洞見(jiàn)。
這里我們?cè)囍忉屓缦拢紫任覀円榻B運(yùn)算強(qiáng)度(arithmetic intensity,簡(jiǎn)寫(xiě)成AI)的概念,指的是針對(duì)單位內(nèi)存讀寫(xiě)數(shù)據(jù)進(jìn)行的運(yùn)算次數(shù),以FLOP/Byte為單位。比如衡量計(jì)算效能的正確姿勢(shì)(2)介紹過(guò)的SAXPY,每次迭代,有三次內(nèi)存訪(fǎng)問(wèn)(x讀一次,y讀寫(xiě)各一次),而有兩次浮點(diǎn)運(yùn)算(乘加各一次),所以其AI為(2 * N) / (3 * N * 4) = 1/6。
int N = 1 《《 22;
void saxpy(float a, float *x, float *y){
for (int i = 0; i 《 N; ++i)
y[i] = a*x[i] + y[i];
}
引進(jìn)AI后,算力FLOPS就可以用以下公式來(lái)計(jì)算。

兩邊取對(duì)數(shù),

以logFLOPS為Y,logAI為X,我們可以得到斜截式 Y = X + logBW,另對(duì)特定平臺(tái),算力FLOPS存在極限值,據(jù)此我們可以作如下圖。

圖中紫色的線(xiàn)條是不是很類(lèi)似屋脊線(xiàn),這正是該模型命名的由來(lái)。以脊點(diǎn)為界,左邊區(qū)域構(gòu)成內(nèi)存帶寬瓶頸區(qū)域,右邊區(qū)域?qū)?yīng)算力瓶頸區(qū)域。已知某算法的AI,其最大可獲取FLOPS很容易計(jì)算得到,見(jiàn)如下公式,為AI所在豎直線(xiàn)與Roofline的交點(diǎn)。如算法Algo1的AI處于內(nèi)存帶寬受限區(qū)域,而算法Algo2的AI則位于算力受限區(qū)域,如果Algo1和Algo2為同一問(wèn)題兩種算法方案,顯然Alg2更有機(jī)會(huì)獲取滿(mǎn)意的FLOPS。

上面公式代表了理想化的情形,實(shí)際操作中,存在各種各樣的天花板(Ceiling)障礙,算法優(yōu)化的過(guò)程就是反復(fù)突破這些障礙而盡量接近roofline,最后得到理想的性能。如下圖過(guò)程展示,介紹如何通過(guò)改善算法的數(shù)據(jù)局部性以充分利用Cache,并通過(guò)向量化而調(diào)用SIMD硬件資源來(lái)達(dá)到這一目的。

除了上面介紹的Roofline模型能夠讓我們?cè)谔囟ㄆ脚_(tái)“紙上談兵”改善算法性能,Roofline也可以可視化同一算法部署在不同平臺(tái)時(shí)候性能的比較,結(jié)果讓人一目了然。在Google的有關(guān)TPU(TPU是Google開(kāi)發(fā)的專(zhuān)門(mén)用于神經(jīng)網(wǎng)絡(luò)算法加速的芯片)的論文《In-Datacenter Performance Analysis of a Tensor Processing Unit》里,作者利用Roofline圖表來(lái)比較各種神經(jīng)網(wǎng)絡(luò)算法分別部署在同時(shí)代CPU、GPU和TPU的性能差異,令人印象深刻。五角星、三角形、圓形分別代表對(duì)應(yīng)算法在TPU、GPU和CPU上運(yùn)行狀況。

需要指出的是,Roofline模型在實(shí)踐中并不像想象般容易,運(yùn)用的時(shí)候有很多細(xì)微的地方需要仔細(xì)推敲。但它仍不失為非常insightful的尋寶圖,如果你能學(xué)會(huì)正確解讀,它完全有機(jī)會(huì)幫我們找到算法性能優(yōu)化的巨大寶藏。以后我們會(huì)有很多場(chǎng)合涉及它的理念和具體用法,敬請(qǐng)期待。
編輯:lyn
-
asic
+關(guān)注
關(guān)注
34文章
1274瀏覽量
124670 -
cpu
+關(guān)注
關(guān)注
68文章
11285瀏覽量
225145 -
算法
+關(guān)注
關(guān)注
23文章
4784瀏覽量
98102
原文標(biāo)題:Roofline模型初步
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
百度正式發(fā)布并開(kāi)源新一代文檔解析模型PaddleOCR-VL-1.5
醫(yī)療后勤應(yīng)急保障大模型智能調(diào)度系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
大模型驅(qū)動(dòng)的星間鏈路動(dòng)態(tài)組網(wǎng)分系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
基于大模型ai的地面測(cè)控站網(wǎng)調(diào)度分系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
大模型支撐后勤保障方案生成系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
大模型賦能物資需求精準(zhǔn)預(yù)測(cè)與采購(gòu)系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
后勤資源大模型智能調(diào)度系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
深度解析 | 低抖動(dòng)高精度EtherCAT多軸控制的實(shí)現(xiàn)與實(shí)踐案例
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)27: 橋設(shè)備模型設(shè)計(jì)
大模型工具的 “京東答案”
AIcube1.4目標(biāo)檢測(cè)模型導(dǎo)入yolotxt格式數(shù)據(jù)集后一直顯示數(shù)據(jù)正在解析,為什么?
cubemx導(dǎo)入模型后找不到keil找不到工程內(nèi)的模型的相關(guān)文件是怎么回事?
千方科技大模型技術(shù)在交通運(yùn)輸領(lǐng)域的應(yīng)用實(shí)踐
NVIDIA使用Qwen3系列模型的最佳實(shí)踐
?VLM(視覺(jué)語(yǔ)言模型)?詳細(xì)解析
解析Roofline模型實(shí)踐
評(píng)論