處理器運算能力單位

2021-10-03 09:09:39 字數 1970 閱讀 1303

模型對於硬體的要求,第乙個是計算量,即乙個深度學習模型需要多少次計算才能完成一次前饋.除了運算量之外,模型對記憶體頻寬的需求也是影響實際計算所需要時間的重要引數。

如果把記憶體比做高速路,運算單元比作車道數,那麼資料就是路上的車,而記憶體介面就是收費口,通過收費口的資料才能進入車道行駛(運算處理)。而記憶體頻寬就是收費口的寬度了。收費口寬度越窄,則資料需要越多時間才能進入車道(處理單元)。正所謂「巧婦難為無公尺之炊」,如果頻寬有限,那麼即使車道再好、處理單元無限快,在大多數時候也是處理單元在空等資料,造成了計算力的浪費。

演算法對於記憶體頻寬的需求通常使用「運算強度(operational intensity,或稱arithmetic

intensity)」這個量來表示,單位是ops/byte。這個量的意思是,在演算法中平均每讀入單位資料,能支援多少次運算操作。運算強度越大,則表示單位資料能支援更多次運算,也就是說演算法對於記憶體頻寬的要求越低。所以,運算強度大是好事!

處理器運算能力單位

tops是tera operations per second的縮寫,1tops代表處理器每秒鐘可進行一萬億次(10^12)操作。

與此對應的還有gops(giga operations per second),mops(million operation per second)算力單位。1gops代表處理器每秒鐘可進行一億次(109)操作,1mops代表處理器每秒鐘可進行一百萬次(106)操作。tops同gops與mops可以換算,都代表每秒鐘能處理的次數,單位不同而已。

在某些情況下,還使用 tops/w 來作為評價處理器運算能力的乙個效能指標,tops/w 用於度量在1w功耗的情況下,處理器能進行多少萬億次操作。

對於步長(stride)為1的3×3卷積運算,假設輸入資料平面大小為64×64。簡單起見,假設輸入和輸出feature都為1。

這時候,總共需要進行62×62次卷積運算,每次卷積需要做3×3=9次乘加運算,所以總共的計算次數為34596,而資料量為(假設資料和卷積核都用單精度浮點數2byte):64x64x2(輸入資料)+ 3x3x2(卷積核資料)= 8210 byte,所以運算強度為34596/8210=4.21。

如果我們換成1×1卷積,那麼總的計算次數變成了64×64=4096,而所需的資料量為64x64x2 +1x1x2=8194。顯然,切換為1×1卷積可以把計算量降低接近9倍,但是運算強度也降低為0.5,即對於記憶體頻寬的需求也上公升了接近9倍。因此,如果記憶體頻寬無法滿足1×1卷積計算,那麼切換成1×1卷積計算雖然降低了接近9倍計算量,但是無法把計算速度提公升9倍。

深度學習計算裝置存在兩個瓶頸,乙個是處理器計算能力,另乙個是計算頻寬。如何分析究竟是哪乙個限制了計算效能呢?可以使用roofline模型。

典型的roofline曲線模型如上圖所示,座標軸分別是計算效能(縱軸attainable gflops/s)和演算法的運算強度(橫軸)。roofline曲線分成了兩部分:左邊的上公升區,以及右邊的飽和區。

當演算法的運算強度較小時,曲線處於上公升區,即計算效能實際被記憶體頻寬所限制,有很多計算處理單元是閒置的。隨著演算法運算強度上公升,即在相同數量的資料下演算法可以完成更多運算,於是閒置的運算單元越來越少,這時候計算效能就會上公升。

然後,隨著運算強度越來越高,閒置的計算單元越來越少,最後所有計算單元都被用上了,roofline曲線就進入了飽和區,此時運算強度再變大也沒有更多的計算單元可用了,於是計算效能不再上公升,或者說計算效能遇到了由計算能力(而非記憶體頻寬)決定的「屋頂」(roof)。

roofline模型在演算法-硬體協同設計中非常有用,可以確定演算法和硬體優化的方向:到底應該增加記憶體頻寬/減小記憶體頻寬需求,還是提公升計算能力/降低計算量?如果演算法在roofline曲線的上公升區,那麼我們應該增加記憶體頻寬/減小記憶體頻寬需求,提公升計算能力/降低計算量對於這類情況並沒有幫助。反之亦然。

由於卷積神經網路中能實現卷積核覆用,因此運算強度非常高,於是可以非常接近tpu roofline曲線的屋頂(86 tops)。

ref

處理器運算能力單位(TOPS)

tops是tera operations per second的縮寫,1tops代表處理器每秒鐘可進行一萬億次 10 12 操作。與此對應的還有gops giga operations per second mops million operation per second 算力單位。1gops代表...

物理處理器與邏輯處理器

記錄解決方案,自己實際處理過,方案可用,在自己的部落格中記錄一下。cpu central processing unit 是 處理單元,本文介紹物理cpu,物理cpu核心,邏輯cpu,以及他們三者之間的關係。乙個物理cpu可以有1個或者多個物理核心,乙個物理核心可以作為1個或者2個邏輯cpu。物理c...

處理器核心

處理器核心 cache 寫緩衝器 主存 輔助儲存器 寫操作,對核心而言非迫切,所以加乙個寫緩衝器很好。cache可放在處理器核心與mmu之間 邏輯 cache,主流 也可放在mmu與主存之間 物理 cache 對儲存器中相同或相鄰資料和 的反覆使用,是cache改善效能的主要原因。cache同時使用...