這次我們準備聊下決定系統計算性能的兩大關鍵指標,1. 浮點運算能力(FLOPS), 2. 內存帶寬(Memory Bandwidth)。
一· 為什么這兩個指標很重要
目前無論是嵌入式系統,PC還是大型服務器都遵循了馮。諾依曼結構。
對CPU密集型程序來說,執行時候系統的內部交互主要在處理器(包括控制器和運算器)和存儲器之間展開,大概是如下圖過程。
所以CPU的處理能力以及訪存的效率對程序的性能起到了關鍵作用。大家知道計算一個程序執行時間的公式如下(假設該程序是CPU Bound),
程序執行時間(time) = 程序指令數目(Intructions) * 指令的平均時鐘數(CPI, Clock cycles/Instruction) * 時鐘周期(Seconds/Clock cycle)
為支持計算所需的精度和廣度,CPU/GPU ALU支持浮點運算,單精度甚至雙精度都是必須的要求。這里我們引入FLOPS(floating point operations per second)的概念來表征CPU/GPU浮點運算能力,所以針對浮點計算密集型程序,把FLOPS套到上面公式,我們可以用浮點運算數目/FLOPS來估摸程序大概執行時間。
訪存效率的重要性我們這里也可以再提一下,以GPU為例,無論是游戲還是深度學習,都有大量的內存讀寫數據量。比如graphics里,有三角面片模型裝載,紋理采樣,深度測試(depth test),Alpha混合,以及圖像輸出等等。深度學習訓練的時候,巨大的訓練集/測試集輸入,迭代過程幾十萬,百萬級別參數讀寫。如果訪存成為瓶頸(Memory Bound),強大的計算能力也無從發揮。
二,如何知道FLOPS 和內存帶寬
我們先看下如何得到兩個指標的理論數值。
關于內存帶寬,假設某款GPU,其顯示內存的時鐘頻率為1546 MHZ,顯存的位寬(Interface Width)為384 bit, 則其帶寬的理論峰值計算如下,具體也可以參考https://en.wikipedia.org/wiki/Memory_bandwidth。
BW = 1546(clocks per second) * 384(memory interface width) * 2(DDR) / 8(In bytes) = 148GB/s
而GPU的理論FLOPS計算就要微妙很多,各個廠家對演算過程諱莫如深,一般不會公開,我們這里也不多著墨,大家參考廠家給出的數據罷了。ARM的網站寫過一篇文章探討FLOPS營銷噱頭一地雞毛的狀態,Flipping the FLOPS - how ARM measures GPU compute performance,搜來看看,可以起到心理預防的作用。
相比理論數值,對碼農來說,我們更關心是我們程序運行的實際性能數值,這才是關系我們飯碗的要緊之處。假設一個程序的核心運算是如下SAXPY,恰當地部署到GPU或者多核CPU后,比如平均運行時間為1us,我們該如何計算實際訪存帶寬和FOPS?
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];
}
我們可以看到每次迭代,有三次內存訪問(x讀一次,y讀寫各一次),而有兩次浮點運算(乘加各一次)。所以實際BW和FOPS的計算如下,
BW = (3 * N * 4) / (1 / 1e9) = 120GB/s
FOPS = (2 * N) / (1 / 1e9) = 20GFLOPS
我們可以把實際數值和理論峰值比較下,確認運算瓶頸在何處,是memory bound還是cpu bound,然后進一步優化,關于這部分內容,我們以后介紹roofline模型的時候還會涉及。
三,ALU和訪存的功耗水平
下圖來自David A. Patterson的另一本著作《計算機體系結構:量化研究方法》,羅列45nm制程各種類型ALU和訪存的功耗大小以及他們相對水平,可以看到32b的內存訪問的功耗遠超同樣位寬大小的運算。
為什么我們要在這里留意功耗水平?移動設備由于電池供電,尺寸大小散熱限制,對功耗異常敏感,功耗大小直接決定設備的使用價值。以后我們談到移動GPU的設計的時候,可以了解如何在消除減少內存訪問方面極盡所能。另外比特幣礦場礦機,數據中心的服務器,其數目都是以萬記,它們更是電老虎,每天的電力消耗才是運營的最大費用,會極大地影響了投資回報率,所以功耗水平有很重要的經濟效果。最后目前全民倡導碳中和,綠色計算,身處產業鏈的我們,從硬件和軟件角度,努力提升功耗水平,也有很大社會意義。
編輯:lyn
-
cpu
+關注
關注
68文章
10905瀏覽量
213032 -
gpu
+關注
關注
28文章
4777瀏覽量
129362 -
ALU
+關注
關注
0文章
33瀏覽量
13135
原文標題:GPU: 衡量計算效能的正確姿勢(2)
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
GPU云計算服務怎么樣
調理電路的噪聲余量計算如何計算
算智算中心的算力如何衡量?
![算智算中心的算力如何<b class='flag-5'>衡量</b>?](https://file.elecfans.com/web2/M00/4E/DC/poYBAGLCjeiALm_WAAAYmfR7Qec474.png)
電磁流量計的正確調試步驟
芯原發布新一代Vitality架構GPU IP系列
云端超級計算機使用教程
《CST Studio Suite 2024 GPU加速計算指南》
靶式流量計的工作原理 靶式流量計和渦街流量計比較
GPU計算主板學習資料第735篇:基于3U VPX的AGX Xavier GPU計算主板 信號計算主板 視頻處理 相機信號
![<b class='flag-5'>GPU</b><b class='flag-5'>計算</b>主板學習資料第735篇:基于3U VPX的AGX Xavier <b class='flag-5'>GPU</b><b class='flag-5'>計算</b>主板 信號<b class='flag-5'>計算</b>主板 視頻處理 相機信號](https://file1.elecfans.com/web2/M00/FE/10/wKgaomaYjFOADGoyAABAVO17m0A627.png)
大模型單卡的正確使用步驟
賦能產業互聯網,高通量計算讓世界更高效!
![賦能產業互聯網,高通<b class='flag-5'>量計算</b>讓世界更高效!](https://file1.elecfans.com/web2/M00/C9/04/wKgaomYY2TSASjybAAHZgnk2Pl4466.jpg)
評論