UNAT加速庫:突破異構計算瓶頸,實現跨平臺高效仿真

圖片

隨著高性能計算機性能的不斷躍升,傳統的基于CPU的摩爾定律逐漸失效,因此,采用眾核處理器來構建異構計算機已成為行業主流趨勢。然而,異構眾核處理器的迅猛發展也為異構計算領域帶來了一系列挑戰。

目前,異構眾核處理器的架構呈現出多樣化的特點,涵蓋了CPU+GPU架構、CPU+FPGA架構、CPU+ASIC架構、多核CPU架構以及國產申威架構等多種形式。與此同時,并行編程模型同樣呈現多樣化的趨勢,包括用于GPU加速的CUDA、跨硬件的OpenCL、加速CPU和GPU的OpenACC、共享內存的OpenMP以及跨節點并行的MPI等編程語言。在工業仿真領域,多種數據結構并存,如結構網格和非結構網格等,都對異構計算提出了更高的要求。

目前較為流行的性能可移植加速庫為Kokkos,其C++庫巧妙地統一了細粒度數據并行和內存訪問模式的抽象,使得應用程序和函數庫能在不同的眾核架構上實現性能的可移植。Kokkos解決了異構節點上編程模型不統一的問題,并通過運用C++特性定義接口,極大簡化了編程接口。GraphBLAS則是統一不同數據結構和算法領域的代表者,它采用了類BLAS庫的矩陣、向量算子接口,不同之處在于允許用戶自定義類型及類型相關的算子,相對傳統數學庫大大擴展了可用性。GraphBLAS屏蔽了底層數據結構的接口,為上層應用開發者減輕了負擔,同時也為數據結構、算法與硬件架構的協同優化提供了更多空間。

圖片

Kokkos應用場景

圖片

GraphBLAS中矩陣的圖抽象

鑒于上述因素,針對非結構網格開展屏蔽硬件架構差異、封裝數據結構和算法實現細節的統一加速庫開發工作顯得尤為重要。為此,我們提出了一個名為UNAT(UNstructured Acceleration Toolkit)的性能可移植統一加速庫。UNAT充分吸收了KOKKOS統一硬件抽象和GraphBLAS接口統一等方面的優勢,并借鑒了非結構加速套件的成功實踐經驗。目前,UNAT已經實現了在神威、x86平臺上的數值模擬應用低代碼加速開發和高效計算。

一、過往取得的豐碩成果

在工業仿真領域,主要包括兩種數據結構——結構化網格非結構網格。

非結構網格相較于結構網格具有更強的適應性和靈活性,在處理復雜幾何形狀和邊界條件時表現出色,因此在工業仿真領域得到廣泛應用。例如,知名商業CFD軟件Fluent以及開源CFD軟件OpenFOAM均采用基于非結構網格的有限體積法,而大多數結構分析軟件如Abaqus、Nastran等則采用基于非結構網格的有限元法。盡管非結構網格具有顯著優勢,但其數據結構特性使得算法計算訪存比較低、訪存更離散,這導致超算的內存帶寬成為瓶頸,尤其是在太湖之光等先進超級計算機上,對非結構網格算法的優化加速構成一大挑戰。

神工坊在非結構網格FVM、FEM程序移植加速方面積累了豐富經驗。 為提升性能,我們提出 拓撲、數據、算子三元分解概念,并運用迭代器實現三者間的聯系與遍歷執行過程。在迭代器中,我們進行了數據結構的預處理、多線程加速算法實現以及算子的施加。

圖片

按照拓撲、數據和操作三元分解的加速庫接口設計,計算熱點加速開發代碼從1000行降至10+行


圖片

Goodwin矩陣spMV性能BenchMark測試,在神威·太湖之光上最高加速25+倍,超理論極限的70%

二、UNAT重點開發任務

為了順應國際加速庫的發展趨勢,并結合非結構化數據的特點,我們致力于開發一個跨平臺、性能可移植的加速庫。該庫可實現統一的矩陣、向量形式迭代接口,以滿足非結構、結構化、粒子等多種拓撲形式的加速需求。在工業仿真領域,向量、圖、多維向量這三種拓撲尤為重要,其中向量運算對應物理場的操作,圖-向量對應非結構網格的遍歷,多維向量對應結構網格的遍歷。

因此,我們的開發任務涵蓋了向量、圖、多維向量這三種拓撲,同時,我們將支持太湖之光、神威E級、NVIDIA GPU、x86共四類平臺,后續我們將擴展國產神威新一代超算等平臺,共計12大核心模塊,并加以排序等輔助功能,以確保加速庫的性能和易用性。

三、實現的路徑及方法

01統一硬件架構抽象

經過精心設計和優化,我們根據GPU、申威、x86架構的不同之處,統一對硬件做內存RAM、多層級緩存Cache(Multi-Level Cache, MLC)抽象以簡化架構,極大地縮減了軟件開發過程,提升了開發效率,并降低了開發復雜度,使得軟件開發者可以更方便地使用和管理硬件資源。此外,我們還統一設置了緩存數據訪問Load和寫回Store操作,對于無法手動控制緩存的處理器進行了置空操作或者設置個分段訪問地址。我們能夠為各個平臺定制出高效且可靠的存取中間件,并對接口進行統一封裝,展現給用戶的僅為一個API接口。這樣,用戶無需關心底層實現的細節,即可輕松開發出跨平臺的應用程序。

圖片

02自適應數據結構

前文中,我們雖然對硬件進行了抽象處理,但針對數據的大小也存在著邊界情況。為了確保數據的完整性和處理效率,我們采用了自適應操作,以避免數據溢出和離散訪存導致的利用率低的現象。在實際應用中,數據的熱點分布情況是復雜多變的,我們需要進行自適應分段并選擇分段的粒度。通過采用高內聚分段算法對熱點情況自適應選擇分段粒度,保證多線程并發中不發生數據沖突問題。例如,非結構網格鄰接矩陣采用分圖法,結構網格采用二維或者三維分塊法。

分圖法:是一種用于將圖(Graph)或圖相關的數據結構進行劃分的方法,它可以將大規模的圖或網絡劃分成若干個子圖,以便在不同的計算節點上并行處理。分圖法的目的是盡可能均衡地劃分圖的節點和邊,以減少通信開銷并提高計算效率。

分塊法:用于劃分結構化數據(如矩陣),在分塊法中,數據被劃分成若干個塊,每個塊包含一定數量的數據元素。這種劃分可以幫助提高數據訪問的局部性,減少緩存失效和提高計算效率。

圖片

一維兩色染色

圖片

二維四色染色(考慮對角也有臨近關系)

四、試結果展示

01算子性能測試

在算子性能測試中,我們選取了單向量累加、向量乘加、向量取倒數、計算調和級數4個算子進行測試。此次測試是在單核環境下完成的,以確保測試結果的準確性和可靠性。

我們對4個算子在神威平臺進行了測試,測試結果如下圖所示:

圖片

神威平臺下算子加速比圖

我們可以看出單核環境下使用算子和不使用算子之間存在顯著的性能差異:4個算子取得了較高的加速比,加速比均在15以上,其中,調和級數的優化效果最為明顯,達到了160的加速比

02稀疏矩陣向量乘

在數值模擬中,求解大規模稀疏線性方程組是非常重要的一個環節。在迭代求解過程中,稀疏矩陣向量乘法是耗時最長的計算核心之一,存在嚴重的數據局部性差、寫沖突、負載不均衡等問題。因此,稀疏矩陣向量乘法已經成為了當前性能優化的難點和研究熱點。

我們基于神威平臺,隨機選取了來自電磁、流體等領域的典型稀疏矩陣算例,測試了近60種矩陣,運行結果如下圖所示:

圖片

根據上圖,我們可看出大部分算例取得了較好的加速比,然而,也有部分算例的加速比并不理想,這可能與內部非零元素的數量以及矩陣的規模有關。為了進一步探索影響加速比的因素,我們計劃接下來對非零元素的比例進行測試。加速比是指在進行性能比較時,用來表示在不同條件下執行相同任務所需時間的比值,它被廣泛應用于并行效果的對比。加速比=串行時間/并行時間。

對非零元個數測試中,我們選取了1萬-100萬個不同級別的非零元個數的SuiteParse矩陣(前身為佛羅里達大學稀疏矩陣集合),它是一組在實際應用中的稀疏矩陣,該集合被數值線性代數社區廣泛用于稀疏矩陣算法的開發和性能評估。矩陣非零元個數和加速比的關系如下圖所示:

圖片

*算例來源:https://sparse.tamu.edu/

我們可以看出過半算例加速比在5以上最大加速比接近20。加速效果與非零元個數成正比,即非零元個數越多,加速效果越明顯。此外,加速效果還與非零元的比例成正相關,矩陣大小和非零元個數是決定性因素。

五、UNAT應用案例

01OpenFOAM風資源評估應用

某風電整機頭部企業,需要對風場風機發電量進行實時評估,因此對風資源分析的分辨率要求高,仿真分析的規模也比較大,而預測用時不能太長,企業現有的硬件和軟件資源無法滿足現場要求。

基于神工坊平臺,完成仿真求解模塊的高性能改造及部署,整體性能提升4.2倍,最終實現產品化的為風資源工程師完成了超過2000個風資源項目的設計和評估。依托于超算平臺,其自主研發的風功率預報系統孔明已發布推廣,成為行業標桿應用。

圖片

圖片

02風雷軟件

用戶開發了自研CFD軟件,實現軟件的國產化,但考慮硬件可能存在斷供風險,需要在國產超算上進行適配,并實現百億網格和百萬核并行的超大規模數值模擬,但是用戶對國產眾核架構了解不多,如果從頭學習,成本高昂,而且用戶自研程序出于保密考慮,不能提供給第三方進行改造。

國內首個開源CFD軟件PHengLEI,基于UNAT加速庫加速,熱點加速比最高達到15+倍,鄰接矩陣帶寬降低約100倍。

圖片

圖片

總體來說,多平臺可移植的加速庫UNAT在神威下加速效果良好,對百萬非零元個數的稀疏矩陣向量乘運算,達到了20的加速比。展望未來,我們將繼續拓展該加速庫的支持平臺,以適應更多元化的應用場景,并致力于提升其加速性能,為跨平臺應用程序的性能優化提供更多選擇和可能性。


UNAT加速庫:突破異構計算瓶頸,實現跨平臺高效仿真的圖16


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP