Kernekoncepter
RAMSES-yOMP 通過採用混合并行化方案、改進的泊松方程求解器和增強的負載平衡方案,顯著提高了天體物理模擬代碼 RAMSES 的性能和內存效率。
論文概述
本論文介紹了 RAMSES-yOMP,它是對天體物理流體動力學模擬代碼 RAMSES 的改進版本。RAMSES-yOMP 在預先存在的 MPI 結構之上添加了 OMP,實現了一種混合并行化方案。新代碼還包括兩項額外的性能改進:用於求解泊松方程的預處理流水線共軛梯度法,以及針對粒子的增強負載平衡方案。
主要發現
在利用 1536 個核心的基準模擬中,新代碼的執行時間縮短至約 53%,與原始代碼相比速度提升了約 2 倍。這種縮短源於多個因素,包括更好的核心間負載平衡、更少的域分解開銷以及改進的泊松方程求解器。
內存使用量減少了約 23%(減少了約 4 倍),磁盤空間使用量減少了約 70%(減少了約 1.4 倍)。使用表現出最佳性能的 OMP 線程數 (NOMP = 16) 時,內存和磁盤空間分別減少到約 33% 和約 74%。通過減少 MPI 域的數量來節省內存,從而平衡不同域之間內存使用量的差異。減少磁盤空間使用量的原因是減少了 MPI 結構中保存的網格數據的冗餘。
儘管由於算術運算中舍入誤差模式的不同,結果會隨著時間的推移而略有不同,但採用混合并行化的新代碼可以合理地重現僅 MPI 運行的結果。
RAMSES-yOMP 的意義
RAMSES-yOMP 在并行性能和內存效率方面表現出色。yOMP 實現的混合并行化具有多種優勢。新代碼為有效利用超過 10000 個核心的天體物理模擬提供了可能性。這為需要越來越具有挑戰性的計算資源的天體物理學界提供了一個巨大的機會。減少 MPI 域可以有效利用內存,從而能夠在 RAM 規模較小的設備上執行模擬,而無需故意閒置核心來確保內存空間。確保的內存空間還可以用於分配信息,這些信息可用於存儲額外的物理特性,例如細胞數據中的化學物質、塵埃和輻射(Han et al. 2025,準備中)。這些性能改進的結合使得以前由於代碼的并行效率低下而無法進行的大規模模擬成為可能。
RAMSES-yOMP 的局限性和未來方向
儘管如此,yOMP 代碼在包含重子物理學的流體動力學模擬中仍然存在一些潛在的瓶頸,這些瓶頸主要來自與網格結構交互的基於粒子的子程序的并行實現。最突出的部分包括使用雲中細胞 (CIC) 算法進行的密度估計和機械超新星反饋(Kimm & Cen 2014)。這些子程序具有以下特點:每個線程可以同時訪問和更新重疊的網格位置。為了防止競爭條件可能導致數據損壞,代碼必須包含原子操作、關鍵操作或鎖定操作,這些操作會導致模擬速度變慢。
此訪問擁塞問題的嚴重程度取決於不同線程更新重疊共享數組的頻率,該頻率隨線程數的增加而增加,並且可能是圖 2 中 NOMP = 64 情況下性能下降的主要原因,從而導致“最佳點”的存在。通過為每個線程分配一個臨時數組並在私有內存中執行大多數計算,然後以降低的頻率一次性將匯總的更新應用於共享內存,可以緩解此問題。此策略已在代碼的大多數 OMP 實現中採用。但是,某些子程序涉及複雜的迭代功能,不允許對主內存屬性進行并行更新。機械超新星反饋就是這種情況,它涉及一種算法,該算法在單個順序執行中推斷和更新目標網格和相鄰網格,從而強制執行單線程操作。此算法的完整 OMP 實現可能需要放棄始終如一地重現單線程行為的約束。
OMP 的靈活性允許在模擬運行期間更改核心數量,這在原始版本的 RAMSES 中是不可能的。這種能力增加了極大的便利性,特別是對於利用大量計算資源的模擬項目,用戶需要適應資源可用性。代碼的發佈版本可在 Han et al. (2024) 中找到。代碼的實時版本可在 git 存儲庫 1 中找到。
Statistik
使用 1536 個核心進行基準模擬時,新代碼的執行時間縮短至約 53%,與原始代碼相比速度提升了約 2 倍。
內存使用量減少了約 23%(減少了約 4 倍),磁盤空間使用量減少了約 70%(減少了約 1.4 倍)。
使用表現出最佳性能的 OMP 線程數 (NOMP = 16) 時,內存和磁盤空間分別減少到約 33% 和約 74%。