HPC 三難困境:在效能、可攜性和生產力之間選擇
物理科學以應用數學描述世界。地震學、電磁學和流體動力學都仰賴偏微分方程式和有限差分模擬等技術來為物理現象建模。
Python 及其科學資料庫生態系統(例如 NumPy、SciPy 和 MatPlotLib)為科學家和研究人員提供框架,讓他們使用相對較少且容易取得的程式碼,開發複雜的特定領域解決方案。正是這種多功能性和生產力,促使 Python 成為現今科學與工程領域數一數二的主導語言。還有哪種程式語言可以真的匯入反重力?
雖然純 Python 可能比編譯式語言慢,但它在高效能運算(HPC)中的主要角色是,為以低等級編譯式語言(例如 C、C++、Fortran,甚至是適用於 GPU 支援的 CUDA、SYCL 或 HIP )撰寫的高度最佳化程式庫提供存取介面。Python 的科學資料庫(例如 NumPy 和 SciPy),利用這些編譯後端提供高效能,同時維持 Python 簡單易用。然而,這個模型仍然仰賴針對特定領域任務的最佳化 HPC 程式碼可用性,而這通常需要專門的專業知識和資源才能開發及維護。
Devito 解決方案:讓科學家專心當科學家
Devito Codes 團隊旨在將 HPC 等級有限差分程式碼的即時(JIT)編譯引進 Python 生態系統。科學家可透過 Devito,在 Python 的符號與數學框架(SymPy)中工作,撰寫複雜的偏微分方程式解答器與目標導向的最佳化問題,並順暢生成適用於所有主要 CPU 和 GPU 架構的並行化、硬體最佳化 HPC 程式碼。
Devito 程式碼透過 Intel Xeon 6 取得重大優勢(數值愈高表示表現愈佳)
Devito 程式碼中用於傾斜橫向各向異性(TTI)模型的聲學各向異性傳播器核心(這是一種能源產業常見的地震模型),展現相較於第 5 代 Intel Xeon 可擴充處理器,Intel Xeon 6 的效能提升。1
「大多數人最初採用 Devito 是為了提升生產力,」Devito Code 執行長暨共同創辦人 Gerard Gorman 表示。「它實現了一種獨特形式的快速原型,讓他們把它當成一間運算實驗室。
建立可生成高效能核心,用於各種硬體上的模擬、反演和最佳化任務的 Python 架構,並不簡單。Devito 整合多種 HPC 技術,包括適用於共用記憶體系統的 OpenMP、適用於加速器的 OpenACC 以及適用於平行處理與可攜性的 MPI。進階最佳化需要透過 CUDA、HIP 和 SYCL 等專用語言,針對硬體進行調整。Devito Codes 將幾乎所有已知的最佳化技術應用於結構化運算,並且不斷整合新的進階技術,確保效能隨著時間的推移而不斷增加,通常能與專家手動調校的商用解決方案媲美,甚至有過之而無不及。
透過承擔 HPC 程式碼開發的複雜性,Devito Codes 讓使用者輕鬆地在不同系統之間傳輸專案,同時利用所有可用的運算資源。HPC 營運商與服務供應商可維持目前的基礎架構、利用異質陣列擴充,並且大幅升級,同時確保工作負載保持相容性和效能。
「透過 DevitoPRO ,地球物理學家可從研究論文中取得演算法,並在下午完成實作,而這項任務通常需要數個月的時間編碼和最佳化。這種快速的轉變能讓團隊以前所未有的速度進行實驗及創新,加速新增演算法測試和部署。—Devito 資深解決方案架構師 Mathias Louboutin
DevitoPRO
Devito 最初是在倫敦帝國學院 Gerard Gorman 教授主導的 Intel 平行運算中心計畫中誕生的。最初的專案建立用於地震成像的高效能開放原始碼軟體。隨著專案成熟,成為適用於 HPC 工作負載的真正最佳化編譯器,團隊推出了 DevitoPRO 企業版,具有專有功能、進階效能最佳化,以及商業支援。
DevitoPRO 主要服務於能源產業的勘探地球物理學。除了編譯高度最佳化且可移植的 Python 地震模擬程式碼,DevitoPRO 還為全波形反轉(FWI)和逆時移(RTM)提供高效能傳播器與梯度運算子。DevitoPRO 也為用戶端提供技術支援、訓練、自訂軟體開發,以及硬體專屬最佳化。
Devito 持續提供通用符號與編譯器軟體技術,作為開放原始碼、無專利的軟體,供學術界和產業的研究人員使用。
透過 SYCL 和 Intel 擴充程式碼的可攜性
傳統上,建立可跨異質處理器執行的可攜式程式碼,需要為每種硬體類型編譯獨特的核心,包括 NVIDIA GPU 的 CUDA 核心、AMD GPU 的 HIP 核心,以及 x86 和 RISC CPU 的 C/C++。近年來,SYCL 為 HPC 程式設計師提供一款新的多平台選項,可用於編譯最佳化的 HPC 程式碼。
「Devito 融合符號運算和進階編譯器技術,確保生成可靠、可驗證且最佳化的程式碼,對於以任務為主的數學軟體至關重要。雖然生成式 AI 程式碼缺乏這種精確度與可靠性,但結合這兩種技術,可讓開發和測試新演算法時擁有更高的生產力。」—Devito Codes 執行長暨共同創辦人 Gerard Gorman
SYCL 是跨平台的平行 C++ 抽象層,其中包含 API,可尋找及管理資料資源,以及在多個廠商的混合裝置(包括 CPU、GPU 和 FPGA)執行程式碼。SYCL 是 Intel 在 Intel® Data Center GPU 實作之 oneAPI 和 Data Parallel C++ 的基礎。
Devito Codes 與 Intel 工程師攜手合作,將 SYCL 程式碼生成功能引進 DevitoPRO,包括針對 Intel® Data Center GPU Max 1100 和 1550 系列加速器的最佳化。為了部署,DevitoPRO 使用者只需將 Intel Data Center GPU 定位為即時編譯,即可獲得 SYCL 的效能優勢。
透過混合精度運算擴展彈性波地震學的效能
地震波有兩種形式:縱向主要波(P-wave)和橫向次要波(S-wave)。由於波浪能量和粒子運動在同一維度中傳播,因此對 P 波(地震學家稱為聲學分析)進行建模在數學和運算上都相對簡單。將 P 波和 S 波一起建模(地震學家稱為彈性分析),使幾何結構更加複雜。
因為這兩種波形以九十度角在立體空間移動,所以需要有更多成分的波方程式來描述。彈性分析也需要更高的解析度,才能生成準確的結果,這表示需要收集更多資料。
地震波有兩種形式:縱向主要 (P) 波,和橫向次要 (S) 波。
「如果您執行彈性分析,那麼在最佳情況下,您的記憶體佔用空間將比聲學分析多四到五倍,」Devito Codes 的技術長暨共同創辦人 Fabio Luporini 表示。「這只是因為物理學的原因。您正在耦合偏微分方程式中同時建模更多波場,必須將這些模型保存在記憶體。」
Devito Codes 正在開發混合精確度演算法,這是一種 AI 運算技術,可讓新一代硬體實現彈性運算工作負載。可承受精確度小損失的工作負載,會從 FP-32(32 位元浮點)轉換成精心設計的 FP-32 與 FP-16(16 位元浮點)混合,以一半記憶體代表相同數值。在彈性分析的世界,將 PB 級資料集減半至 500TB,在每個步驟(從記憶體和記憶體管理,乃至於將快照寫入磁碟)都能產生連貫式的效能提升。
Devito 程式碼使用混合精度將效能加倍(數值愈高表示表現愈佳)2
Devito Codes 測試顯示,移位與混合精確度(FP-16/FP-32)可讓效能提升 2 倍,並減少記憶體佔用空間 2 倍,大幅提升輸送量。2
在支援混合精度的 CPU 和 GPU 時,例如 Intel® Xeon® 6 處理器和 Intel Data Center GPU,FP-16 工作負載處理速度也更快。在最初的測試中,以混合精度與 Devito Codes 執行的彈性波分析,效能提升高達 2 倍,1相當於沒有硬體升級,效能也能大幅提升。
結論:每一次效能提升都很重要
Devito Codes 與 Intel 持續改善並最佳化編譯器技術,從異質 HPC 系統中擷取更多效能,用於有限差分模擬。對於 Devito 的開放原始碼和 DevitoPRO 用戶端,這項工作不可或缺。
「處理地表下影像的地震資料,每個專案可能需要耗費數百萬美元的運算費用,」Gorman 表示。「因此,我們必須榨出每一分效能,因為時間就是金錢。」
如需最新資訊,請造訪 GitHub 上的 Devito Codes 或 devitocodes.com。