Abaqus并行效率二三事

Abaqus并行效率二三事的圖1


最近在某論壇沖浪時,我無意間點開了論壇自動推送的一些用戶提問。

不得不承認現(xiàn)在的推送機制很精準,推給我很多跟仿真計算有關(guān)的問題。其中一些Abaqus相關(guān)的問題吸引了我的注意:

  • AMD處理器性價比相較Intel更高,我做有限元仿真可以入手嗎?但很多人說兼容性不好;
  • 我們今年上了AMD新集群跑Abaqus,很多算例計算速度還不如5年前的Intel集群,甚至核用得越多,計算速度越慢;
    ……

我又繼續(xù)檢索了一下,發(fā)現(xiàn)同類型的問題非常多,看來有很多人深受這些問題困擾。 這不巧了,這個問題我們有經(jīng)驗!

Abaqus并行效率二三事的圖2


Abaqus并行效率二三事的圖3

記得在2020年,有個用戶在我們平臺跑Abaqus時也遇到過類似的問題,當時我們花費了不小的功夫才解決。接下來,就讓我慢慢道來……


> >

Abaqus兼容性問題

其實一開始遇到這個兼容性的問題,我的第一反應(yīng)是軟件裝得不對,于是我讓助理工程師小張重裝一下,“認真仔細”地重裝一下。

小張搗鼓了幾天,以失敗告終。

Abaqus并行效率二三事的圖4

小張報告說,安裝界面上也沒有幾個可供用戶配置的選項,純粹是下一步、下一步式的傻瓜式安裝。

他給我提供了一個有效信息:同樣的安裝方式,老Intel集群完全沒問題。 想來也對, 2014年AMD處理器有市場份額嗎?

Abaqus開發(fā)者肯定不會考慮去兼容一個都沒人用的處理器,里面肯定都是各種僅支持Intel處理器的指令集。但當時已經(jīng)是2020年了,我認為高版本的軟件一定是支持AMD處理器的,從小張的測試反饋來看印證了這一點。

根據(jù)我的經(jīng)驗,幾年時間Abaqus開發(fā)者肯定不會大幅改動軟件的架構(gòu),頂多是運行的時候依賴庫更新了。

眾所周知,有限元分析主要就是一系列矩陣運算。我趕緊查看安裝目錄,發(fā)現(xiàn)有一堆 Intel MKL矩陣運算的動態(tài)鏈接庫 ,而Abaqus計算過程中,容易出現(xiàn)兼容性問題的很可能就是這些動態(tài)鏈接庫不支持AMD處理器。

究竟是哪些庫不對呢?又要祭出程序員大招——逐行逐個比對找Bug, 找出新舊版本依賴庫的區(qū)別 (熟練地令人心疼)。

終于,在公司和用戶的雙重壓力下,在不占用工作時間的情況下,我完成了這一壯舉!

Abaqus并行效率二三事的圖5

“小張,你再去測試一下吧,我只能做那么多了!”

我看似棄療,實則信心爆棚。在短暫而又漫長的等待后,捷報頻頻, 之前中途報錯(Illegal instruction)的幾個算例都能在AMD上正常運行了 。


> >

Abaqus并行效率問題

禍兮福之所倚,福兮禍之所伏。用戶剛夸獎了我們效率高、專業(yè)性強,新的問題又接踵而至。 這次不是能不能跑的問題,是跑得慢 。

有多慢呢? 比4年前的Intel慢,慢很多。

我總不能跟用戶講,您回去用4年前的Intel吧?但現(xiàn)實情況是,我們前期投入已經(jīng)巨大,無論是硬件還是軟件適配,幾乎已經(jīng)All IN超威半導(dǎo)體了。

沒辦法,自己選擇的路,跪著也要走完。

Abaqus并行效率二三事的圖6

于是故事進入新篇章—— 提高Abaqus在AMD平臺的并行效率

并行目前主流的無非是共享內(nèi)存并行和分布式并行或者是二者混合。差別是前者只有一個進程共享內(nèi)存數(shù)據(jù),無需通信;后者有多個進程,進程之間需要通信。

拿到小張給我的測試數(shù)據(jù),我傻眼了……

一個100萬個自由度的算例,采用Abaqus/Standard求解,使用直接求解器,并行規(guī)模分別選取8核、16核、32核、64核,8核增加到16核還有點提速,16核增加到32/64核不僅沒有提速,速度反而越來越慢。

我趕緊讓小張切換Abaqus的并行模式(其默認是MPI模式,THREADS為可選),結(jié)果居然是沒有區(qū)別。

Abaqus并行效率二三事的圖7

我急忙讓小張多測幾次,同時我登錄后臺查看進程情況。

果不其然,無論啥并行模式,后臺只顯示一個進程,也就是說MPI并行根本沒有起來,都是共享內(nèi)存并行。

根據(jù)我的經(jīng)驗,這個直接求解器很可能是混合并行模式,也就是在單個節(jié)點內(nèi)部的時候,強制采用共享內(nèi)存并行,節(jié)點之間是MPI通信。

Abaqus并行效率二三事的圖8

很快,小張的測試驗證了這一點,同時帶來了一個非常Amazing的結(jié)果—— 16核之后的并行效率為負的情況得到了扭轉(zhuǎn) 。

下面是計算時間結(jié)果對比,采用相同的核數(shù),一面是單個節(jié)點運行,一面是將作業(yè)平均分配到4個節(jié)點上。在核數(shù)相同的情況下,采用混合并行模式將大大降低計算時間。

Abaqus并行效率二三事的圖9

總結(jié)一下, 我認為本次效率提升有以下幾點原因:

1、模型被分解為多個Part,可以使得單元操作并行化;

2、全局矩陣求解分解為多個Part,充分發(fā)揮了單個節(jié)點的共享內(nèi)存并行效率,規(guī)避了單節(jié)點大于16核之后共享內(nèi)存并行效率低的問題;

3、神工坊集群具有現(xiàn)代化的HPC系統(tǒng),集群計算機之間配備有Infiniband,提供了高帶寬、低延遲和可靠的數(shù)據(jù)交換,這將使得MPI通信損耗降得很低。

終于破案了!
Abaqus并行效率二三事的圖10

由于AMD平臺的核數(shù)一般較多,像我們使用的服務(wù)器采用AMD EPYC? 7002 Series雙路、128核。調(diào)度器默認肯定是用完一個節(jié)點,再用另一個節(jié)點。 這將導(dǎo)致災(zāi)難式的結(jié)果——核越多越慢。這就好比花了更多的錢,得到了更差的服務(wù) 。

就看這個算例,用戶在單節(jié)點上使用64核相對8核多花將近10倍的錢。而 采用我剛才講的跨節(jié)點并行模式, 64核花一半的錢得到翻倍的計算效率

這也反映了一些現(xiàn)象,比如:某仿真平臺主打單位核時低廉,但是用戶租用他們的平臺跑仿真軟件,實際上付出了將近10倍的錢,工作效率卻沒有提升。平臺反而成為“自來水”推薦給其他同事使用,僅僅是因為表面上的價格便宜。

而神工坊平臺不一樣,我們對平臺上的多數(shù)仿真軟件進行了高性能適配,同時根據(jù)用戶需求進行兼容性適配。你用更多的核,就能獲得更高的并行效率,絕不花冤枉錢。

具體結(jié)論在前幾期的文章里有過細致的對比,歡迎回顧:


本文介紹的Abaqus兼容性適配以及Abaqus并行效率優(yōu)化方式只是其中的一些小技巧,更多的高性能適配方式需要很高的HPC并行計算基礎(chǔ),目前就不再展開,歡迎持續(xù)關(guān)注我們后續(xù)的分享。

綜上所述,使用Abaqus進行有限元分析大有門道,特別是并行計算方面, 即使是相同的硬件資源,不同的并行模式和任務(wù)提交方式,所能發(fā)揮出的計算效率和并行效率也是有很大差別 。

“神工坊”高性能仿真平臺基于超算HPC集群的硬件支撐,對仿真軟件進行了CPU平臺的 高性能適配與優(yōu)化 ,相較其他仿真云平臺在計算效率和軟件適配度方面有較大的優(yōu)勢,歡迎廣大仿真從業(yè)者注冊試用!
Abaqus并行效率二三事的圖11
(電腦端瀏覽器打開以獲得最佳體驗)







十四五期間,工業(yè)數(shù)字化將是工業(yè)轉(zhuǎn)型升級的主路線。“神工坊”秉持“算力賦能、協(xié)同創(chuàng)新”的理念,爭做“先進算力到仿真算能的轉(zhuǎn)換器”、“離散機理和垂直仿真場景的連接器”,助力我國工程仿真技術(shù)實現(xiàn)跨越發(fā)展,支撐重大裝備研制創(chuàng)新和工業(yè)設(shè)計研發(fā)數(shù)字化轉(zhuǎn)型。







--神工坊--

撰稿|項陽剛

編輯 | 汪穗鈴

審核 | 任虎

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

TOP

5
2
6