FLOPS檢視原始碼討論檢視歷史
FLOPS |
FLOPS(即「每秒浮點運算次數」,「每秒峰值速度」)是「每秒所執行的浮點運算次數」(floating-point operations per second)的縮寫。它常被用來估算電腦的執行效能,尤其是在使用到大量浮點運算的科學計算領域中。正因為FLOPS字尾的那個S,代表秒,而不是複數,所以不能省略掉。在這裡所謂的「浮點運算」,實際上包括了所有涉及小數的運算。這類運算在某類應用軟件中常常出現,而它們也比整數運算更花時間。現今大部分的處理器中,都有一個專門用來處理浮點運算的「浮點運算器」(FPU)。也因此FLOPS所量測的,實際上就是FPU的執行速度。而最常用來測量FLOPS的基準程式(benchmark)之一,就是Linpack。
簡介
傳統服務器架構的瓶頸主要來自內部PCIe Fabric樹形互連。首先,傳統的數據中心服務器通常只配備一個網絡接口(獨立網卡或者Bond網卡),當該服務器配備多個加速部件(比如GPU)並通過網絡接口並發傳輸數據時,就會面臨很大的流量匯聚,使其成為系統的瓶頸。而這種同步式的網絡訪問,在分布式AI訓練任務中非常常見。AI訓練的數據集一般被劃分為多個批次,每個批次的數據處理完成之後,所有參與計算的NPU加速器都要進行梯度的同步。跨服務器的NPU梯度同步操作都要通過網絡接口進行通信。這種周期性的同步式網絡接口訪問,勢必導致網絡接口上的擁塞。類似的端口擁塞還會發生在PCIe樹形拓撲的跟節點處。分布式AI訓練業務在每個批次的數據處理完成之後,會同步載入下一批次數據,導致內存的並發訪問。其次,PCIe Switch端口上的擁塞可能導致整體通信效率的降低。當NPU1和NPU3同時向NPU2發送數據時,將會在與NPU2直接相連的PCIe Switch端口上形成擁塞。由於NPU1和NPU3到NPU2的通信距離不同,導致二者之間具有顯著的帶寬差異。而AI訓練任務的梯度AllReduce是一個全局性的同步操作,其完成時間往往受限於最慢的鏈路,所以這種鏈路帶寬的不公平性也會導致系統性能的下降。
評價
EFLOP服務器架構重點解決上述互連問題,服務器配備了與加速器(NPU)等量的網卡(NIC),並將NPU和NIC進行綁定配對,每一對綁定的NPU和NIC處於同一PCIe Switch之下,約束NPU的網絡通信只能經由自己綁定的NIC。這樣,NPU的網絡通信流量全部被局限在PCIe Switch之內,避免了網絡接口上的擁塞。針對PCIe Switch引入的擁塞問題,在PCIe流量較大的情況下,禁用NPU之間進行跨PCIe Switch通信,使其通過網絡接口進行數據交換,利用網絡協議棧的流量控制機制來降低系統的擁塞程度。值得強調的是,網絡化服務器架構是一個開放的架構,可為各種加速器提供高速互連,對於自帶直連總線(如英偉達的 NVLink)的加速器同樣兼容,利用其直連總線實現更高帶寬通信。[1]