比起高性能計算(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、通信,對應的優化手段如下:
- 應用:由各個領域的科學家、軟件開發專家基於各自領域的算法,對求解方法進行創新,並採用不同的編程模型。
- 計算:影響計算的主要是軟件技術,如編譯器、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 之一,具有模塊化涉及、易於擴展等特點。
在 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 進行了優化,見下圖:
在 NUMA 架構下,對於同一塊內存,節點內多個處理器的訪問效率通常是不均衡的,此時可以通過多個共享內存塊和 Flag 提高效率。
在節點間,華爲對 B-nominal 算法進行了升級,提出“K-nominal算法”,如下圖:
K-nominal 算法具有更好的普適性,Bcast 算法可通過LogkN階段通信完成,配合節點內共享內存算法可以達到最優通信效果。尤其是在 OpenMPI 下通過算法來自動調整通信包大小、規模以及正確的 k 值,K-nominal 的表現要比 B-nomial 這樣一個典型的分級分步驟的集合通信算法來說,效果更好。
根據丁肇輝的介紹,經過小包測試後,華爲 MPI 在x86上相較於 OpenMPI 提高了2倍以上,在鯤鵬上也提高了2倍。
鯤鵬 HPC 軟件套件還將進行怎樣的完善和迭代?
鯤鵬 HPC 在 2020 年將會發布一套完整的軟件棧體系;目前來看,比較受業內關注的 MPI 和調度器這兩個組件將是近期更新的重點。而編譯器的版本則會相對穩定一些。
這裏以調度器爲例,由於存在很多和用戶之間產生直接交互的複雜功能,所以需要時刻關注用戶的反饋,根據用戶所提出的不同需求來進行版本迭代,因此爲了適應用戶的新需求會加速該版本的迭代。
突破性能極限,未來更值得期待
軟件優化固然重要,但來自底層的革新才能突破性能極限。
早年間,支撐 HPC 高速運轉的CPU均基於 x86 架構,而過多考慮功耗層面的 ARM 因在效能表現上無法滿足應用場景的極致計算需求,在市場上總是叫好不叫座。隨着摩爾定律作爲行業標杆的鐵律越來越難以爲繼,x86 體系遭遇瓶頸。加之 ARM 在功耗和效能之間又在不斷取得更高的平衡,數據中心高效節能的市場訴求也愈加強烈,此前不被看好的架構開始在服務器市場發揮影響力,特別是 HPC 服務器市場。
2019年1月,華爲重磅推出自主研發且基於 ARM 架構的鯤鵬 920 芯片,該芯片具備業界頂尖的製程工藝、集成8通道 DDR4。由於採用“衆核”架構,鯤鵬 920 可以做到最高64個物理 CPU 核,尤其適合大規模並行的計算場景。
基於此,華爲以高性能服務器、大容量存儲爲基礎,推出了端到端的高性能計算解決方案,包括基礎設施、硬件資源、系統環境、集羣管理、服務平臺、行業應用等方面,讓整個 HPC 的應用系統達到最佳的性能。而無論是服務器,還是編譯器、MPI、調試器、函數庫等基礎軟件,均可與企業原有的配置兼容,並實現性能上的優化和提升。
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 產品線全球首席架構師。