仿真干貨|算例核心數越多反而越慢?來了解下“最佳并行規模”!
高性能計算的瓶頸
在實際的工作和科研中,許多人會遭遇一個令人費解的困境:
明明想要通過增加核心數來提高計算效率,但是隨著并行計算核心數的不斷增加,原本期待的加速效果并未如約而至,計算效率的曲線非但沒什么變化,甚至開始不斷下降。
而影響計算效率的因素除了“算法的優化”,像“數據相關性”、“負載平衡”等也涉及其中,下面我們就來講講各個因素為何會影響算例的“最佳并行規模”。
01 影響因素分析
1. 數據通信和同步
在并行計算中,不同處理單元之間需要進行數據通信和同步動作,而過多的核心數所產生的通信時間也是相當可觀的,從而會影響到作業本身的計算效率和計算平臺的整體性能,但是通信密集型任務需要更多的核心,最終的計算效率反而會下降,這個也需要在作業的配置中考慮到。
2. 負載平衡
在并行計算中,各個節點的負載分配可能不均衡,導致部分處理單元負載過重,而部分處理單元空閑,從而影響到計算效率。
3. 數據相關性
并行計算中的數據相關性可能導致處理單元之間的依賴關系,限制了并行度的提高,從而影響性能。
4. 潛在的競爭和瓶頸
在并行計算中,可能存在共享資源的競爭和瓶頸,如內存帶寬、I/O帶寬等,這些因素可能限制并行計算的性能。
5. 算法設計和并行化的復雜性
一些算法并不容易并行化,或者其并行化的復雜性較高,這可能導致并行計算的效率不高。
02 最佳并行規模分析——以“汽車碰撞分析”為例
車輛模型包括數百個部件,如車身、座椅、安全帶、氣囊等。碰撞分析的模型需要考慮所有這些部件的相互作用。
圖片來源:網絡
在汽車碰撞分析中,采用并行計算可以顯著縮短求解時間,但同時也需要注意優化計算性能。根據計算節點和核心數量合理分配任務,避免資源浪費,并通過調整網格劃分,確保計算負載在所有節點間平衡分配,減少計算瓶頸。
配置更多算力核心后,計算效率下降原因分析如下:
1. 負載不均衡
當并行規模過大時,各個計算節點之間的負載分配可能變得不均衡,部分節點計算任務過重,而其他節點則處于空閑狀態,導致整體計算效率下降。
2. 通信開銷增加
過多的并行核心會導致通信頻率和復雜度增加,通信開銷增大,從而拖慢計算速度。
3. 內存管理問題
在大規模并行計算中,內存分配和管理變得更加復雜,可能出現內存不足或內存訪問沖突等問題,影響計算效率。
在實際測試中,使用不同規模的計算資源對同一組LS-DYNA任務進行運算,結果如下:
本地計算資源:
使用32、48、64核計算資源,耗時分別為821、566、439分鐘。
注:本地資源有限,無法提供更多資源測試,共進行了3次作業提交,總計耗時1826分鐘。
云端計算優化型實例:
使用32、48、64、128、256核計算資源,耗時分別為662、458、375、299、321分鐘。
注:云平臺資源充足,可同時進行多個作業的提交和計算,即耗時662分鐘得出所有結果(測試效率提升約64%),得出該作業最佳并行規模為128核。
03 計算效率瓶頸解決方案
方案一:多次作業并行運算,找出合適運算規模
不同的大規模作業需要不同的優化方式,其中包括優化數據讀寫策略、優化網格劃分、找到合適的最佳并行規模。
方案二:在線云平臺解決方案
SimForge高性能仿真云平臺可以在線提供以下資源:
① 在線圖形界面
② 海量軟件提供計算支持
③ 多個大算力作業同步計算
④ 數據實時同步,快速展示傳輸
推薦閱讀
?
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















