Categories
程式開發

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏?


比起高性能計算(High Performance Computing,縮寫HPC),很多人對“超級計算機”感覺更熟悉一些。但事實上,超級計算機就是HPC系統的最尖端水平。在全球超級計算機 TOP500 中,位列榜首的美國橡樹嶺國家實驗室的“頂點”系統,其浮點運算速度為每秒14.86億億次。而這份榜單的入圍門檻也是達到了每秒1.14千萬億次的運算速度。

如此強大的計算能力,究竟能為技術的應用落地帶來什麼?

看似陽春白雪的 HPC 已走向平民化

不同於側重數據密集型、I/O 密集型應用的雲計算,HPC 強大的算力可用於解決大規模科學問題計算和海量數據的處理。早期 HPC 架構和相關設備均為封閉機型和專屬架構,應用也僅限於科學研究、航天航空、油田勘探等高精尖領域,因此,HPC 曾被喻為是 IT 行業“金字塔上的明珠”。隨著計算機技術的發展以及數據量和數據價值的不斷增加,HPC的應用領域在不斷擴大,未來也將愈加“平民化”。

從目前來看,其應用場景大致可分為以下三類:

  • 計算密集型應用(Computing-intensive):大型科學工程計算、數值模擬等。其應用領域為石油、氣象、CAE、核能、製藥、環境監測分析、系統仿真等。
  • 數據密集型應用(Data-intensive):數字圖書館、數據倉庫、數據挖掘及計算可視化等。其應用領域為圖書館、銀行、證券、稅務、決策支持系統等。
  • 通信密集型應用(Network-intensive):協同工作、網格計算、遙控和遠程診斷等。其應用領域:網站、信息中心、搜索引擎、電信、流媒體等。

總體來看,中國企業正處於數字化轉型的高速期,上雲速度加快、數據量迅速增長,對大數據的利用能力已成為企業的核心競爭力,企業對HPC的需求程度前所未有的提升。那麼,作為一項技術門檻高、落地複雜的系統工程技術,HPC 在中國企業中的應用真的進入普及期了嗎?

HPC 應用對計算速度有著極高的要求,這意味著這類機群在系統的處理器、內存帶寬、運算方式、I/O、存儲等方面也都要追尋性能方面的極致。目前,也只有大規模的機構才有能力建立獨有的HPC平台的能力。

然而在互聯網時代,大企業追求輕資產化,努力實現數字化轉型,傳統HPC 平台由於存在運維成本高、擴容難、資源利用率低、數據不流動等問題,難以適應企業的業務發展,甚至成為了瓶頸。那麼,企業如何使這些老舊的 HPC 系統變得更高效靈活?中小企業是否也能以較低的云成本將 HPC 引入業務?

HPC 應用如何實現高性能?

“在高性能計算領域,由於計算量非常大,僅是提高很少量的百分點都能為企業帶來巨大的經濟效益,這其中包括時間的縮短、成本的降低以及能耗的降低。所以在該領域下,業界普遍都在追求非常極致的性能、性價比與能耗比。這樣就迫使服務提供商要從應用需求出發,根據應用的特點來設計硬件和軟件,然後再把這三者做無縫的整合,從而達到更高的性能。”

華為IT產品線 HPC Lab 主任、HPC 首席技術專家丁肇輝在接受 InfoQ 採訪時表示。

提及HPC 應用的性能問題,不同領域下的差異很大,通常企業用戶需要基於自身的應用需求特徵來進行定制化匹配,通過一系列測試工具對HPC 系統進行精細化的研究分析後,找到可以調整和優化的部分,然後通過硬件升級、軟件性能調優、應用擴展等不同方法來提高系統的整體性能,以期達到硬件系統與應用之間的平衡。

在《通過鯤鵬全棧HPC軟件套件提升應用性能》的演講中,丁肇輝將HPC應用性能優化分為四個層次:應用、計算、I/O、通信,對應的優化手段如下:

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 1

  • 應用:由各個領域的科學家、軟件開發專家基於各自領域的算法,對求解方法進行創新,並採用不同的編程模型。
  • 計算:影響計算的主要是軟件技術,如編譯器、Runtime 和數學庫,可以從三個入手進行優化,也可通過異構加速來提升計算效率。
  • I/O:通常 HPC 並行任務的並發 I/O 操作不應採用簡單的 POSIX I/O,而應選擇 MPI-IO。此外,對存儲硬件進行優化也可以提高 I/O 的效率 。
  • 通信:MPI 是最常用的 HPC 通信接口,MPI 集合通信、RDMA 等技術都適用於大規模並行計算機集群,可有效構建高性能、低延遲的存儲網絡。當然,對網絡設備的優化也不能忽視。

不容忽視的軟件調優

雖然很多性能問題都可以通過硬件配置的升級或優化得到解決,但軟件調優部分也決不能忽視。丁肇輝解釋道:

“HPC 其實服務的是科學計算,由於科學計算的領域差異很大,導致其應用特徵差異也較大。因此如果要設計出能夠覆蓋各種場景下應用計算需求的硬件,其實難度還是非常大的。所以在硬件盡可能突破極致性能的同時,也需要軟件接入來確保一定層面上的靈活性。”

從開始設計到最終完成,軟件優化在整個軟件開發週期中都將起到連續迭代的作用。

“在假定硬件不變的前提下,計算角度的優化目標就是將 CPU 的算力發揮出來,消除內存牆等常見問題。

通信層面的優化則以減少網絡擁塞為目的,盡量能夠讓計算和通信的過程能夠疊加,一邊計算一邊做通信。

I/O 的瓶頸與訪存類似,就是盡可能利用更快速、更低時延的存儲來達到一定的目的。但是由於其容量較低,需要考慮如何在多級的存儲之間做切換。另一方面是要盡可能發揮 I/O 並行度的優勢。通常 HPC 的存儲節點是分佈式的,能夠把分佈式的多個存儲節點都發揮出來,來實現並行 I/O。 ”

而需要解決這三個層面的問題,華為主要從架構和算法兩個方面進行創新:

1、MPI 底層架構優化

高性能計算之所以能達到極高的計算速度,是因為在該集群上運行的應用程序一般使用並行算法,把一個大的普通問題根據一定的規則分為許多小的子問題,在集群內的不同節點上進行計算,而這些小問題的處理結果,經過處理可合併為原問題的最終結果。由於這些小問題的計算一般是可以並行完成的,從而可以縮短問題的處理時間。

目前,國內外在高性能計算機系統中,最廣泛使用的並行編程環境是 MPI(Message Passing Interface),它也已成為國際上的一種並行程序的標準。 OpenMPI(open Message Passing Interface)是流行的開源 MPI 之一,具有模塊化涉及、易於擴展等特點。

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 2

在 Open MPI 底層架構中,UCX 實現了針對多種協議的優化的點對點通信。不過由於 UCX 將集合操作轉化為點對點通信的組合,很多對於點對點操作的初始化邏輯是多餘的。對此,在華為 MPI 中,引入 UCG(Unified Communication)的概念,對 UCX 框架進行了重構。根據丁肇輝在演講中的介紹,UCG 把集合操作定義在UCX層,使UCX 通信的初始化邏輯從Per message operation 變為Per collective operation,可以讓軟件在更底層感知到集合通信,從而節省很多軟件上的開銷,包括程序的初始化、數據結構的創建等操作。據了解,目前 UCG 已開源,且已經被社區接受。

總體而言,華為 MPI 具有以下幾個特點:

  • 基於開源 Open MPI 實現;
  • 通信算法基於 Open UCX 進行重構和優化;
  • 支持鯤鵬系列處理器與 x86 CPU;
  • 針對華為硬件的算法優化、硬件卸載;
  • 與華為自研軟件與業界流行軟件無縫集成。

2、基於 UCG 算法的創新

基於並行計算的高性能係統需要保持計算和通信性能的平衡性,其中,集合通信是通信系統的重要組成部分,負責進程之間的數據操作和同步操作。當並行應用的規模越來越大時,所使用的處理器的規模也越來越大,集合通信組內部進程之間的通信量相應增大,且需要相互協作完成通信語義,因此集合通信往往成為系統的性能瓶頸,需要優化集合通信以提高整體系統性能.

在演講中,丁肇輝老師介紹了對集合通信算法的優化,分為節點內和節點間兩部分。在節點內,結合共享內存技術和 CPU 內部的拓撲感知,華為對 MPI_bcast 進行了優化,見下圖:

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 3

在 NUMA 架構下,對於同一塊內存,節點內多個處理器的訪問效率通常是不均衡的,此時可以通過多個共享內存塊和 Flag 提高效率。

在節點間,華為對 B-nominal 算法進行了升級,提出“K-nominal算法”,如下圖:

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 4
性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 5

K-nominal 算法具有更好的普適性,Bcast 算法可通過LogkN階段通信完成,配合節點內共享內存算法可以達到最優通信效果。尤其是在 OpenMPI 下通過算法來自動調整通信包大小、規模以及正確的 k 值,K-nominal 的表現要比 B-nomial 這樣一個典型的分級分步驟的集合通信算法來說,效果更好。

根據丁肇輝的介紹,經過小包測試後,華為 MPI 在x86上相較於 OpenMPI 提高了2倍以上,在鯤鵬上也提高了2倍。

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 6

鯤鵬 HPC 軟件套件還將進行怎樣的完善和迭代?

鯤鵬 HPC 在 2020 年將會發布一套完整的軟件棧體系;目前來看,比較受業內關注的 MPI 和調度器這兩個組件將是近期更新的重點。而編譯器的版本則會相對穩定一些。

這里以調度器為例,由於存在很多和用戶之間產生直接交互的複雜功能,所以需要時刻關注用戶的反饋,根據用戶所提出的不同需求來進行版本迭代,因此為了適應用戶的新需求會加速該版本的迭代。

突破性能極限,未來更值得期待

軟件優化固然重要,但來自底層的革新才能突破性能極限。

早年間,支撐 HPC 高速運轉的CPU均基於 x86 架構,而過多考慮功耗層面的 ARM 因在效能表現上無法滿足應用場景的極致計算需求,在市場上總是叫好不叫座。隨著摩爾定律作為行業標杆的鐵律越來越難以為繼,x86 體系遭遇瓶頸。加之 ARM 在功耗和效能之間又在不斷取得更高的平衡,數據中心高效節能的市場訴求也愈加強烈,此前不被看好的架構開始在服務器市場發揮影響力,特別是 HPC 服務器市場。

2019年1月,華為重磅推出自主研發且基於 ARM 架構的鯤鵬 920 芯片,該芯片具備業界頂尖的製程工藝、集成8通道 DDR4。由於採用“眾核”架構,鯤鵬 920 可以做到最高64個物理 CPU 核,尤其適合大規模並行的計算場景。

基於此,華為以高性能服務器、大容量存儲為基礎,推出了端到端的高性能計算解決方案,包括基礎設施、硬件資源、系統環境、集群管理、服務平台、行業應用等方面,讓整個HPC的應用系統達到最佳的性能。而無論是服務器,還是編譯器、MPI、調試器、函數庫等基礎軟件,均可與企業原有的配置兼容,並實現性能上的優化和提升。

性能優化挑戰重重,鯤鵬HPC如何突破算力桎梏? 7

鯤鵬 HPC 全棧

IT 應用開發部署直接決定著企業數字化創新的能力,這將會有效地觸發 HPC 應用量的急劇增加,同時,應用的多線程和高並發技術走向,也將催生出更多的 HPC 需求。而隨著高性能計算應用的日益廣泛和深入,高性能計算系統技術創新、計算環境創新與應用創新等各個層面還將遇到新的挑戰與機遇。為了讓鯤鵬 HPC 更好地服務於各行各業,華為將在 HPC 領域進行長期的技術投入,包括:

  • 平台層:計算系統(x86、TaiShan)、下一代 NAS 存儲系統、網絡互聯(低時延技術);
  • 中間件:華為 MPI、工具鏈、集群管理、作業調度;
  • 上層應用:氣象&海洋、製造、計算化學、生命科學、油&氣、AI等領域。

我們有理由相信,這顆 IT 行業“金字塔上的明珠”在底層的革新中,將發揮更大的價值。

嘉賓介紹

丁肇輝,現任華為 IT 產品線 HPC Lab 主任、HPC 首席技術專家。負責規劃華為 HPC 解決方案和 HPC 軟件的全棧構建。吉林大學計算機系統結構理學博士,三次到 UCSD(加州大學聖地亞哥分校)和 SDSC(聖地亞哥超算中心)從事研究工作。 2009年加入 Platform Computing 公司從事 HPC 調度器 Platform LSF 研發工作,2012 年隨公司收購加入 IBM,任 IBM Spectrum LSF 產品線全球首席架構師。