fluent并行錯(cuò)誤errno = 10054的解決辦法
2017-04-03 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
目前解決方法:采用 Fluent的
“自動(dòng)保存”功能,從非正常退出處接著算。。。。
一個(gè)月前接手的項(xiàng)目,外加換了新電腦,因?yàn)榍捌诘尿?yàn)證算例網(wǎng)格也不是很多,所以也就沒有使用并行計(jì)算,單線程串行計(jì)算效率也不低,然后具體的方案出來以后,一共一百來個(gè)算例定了下來,開始使用并行計(jì)算,然后FLUENT就開始了無盡的抽搐。我的電腦剛配的新的,i7-2600(4核8線程),16G內(nèi)存(4*4),華碩Z68的主板。算例為100萬網(wǎng)格,FLUENT不定時(shí)報(bào)錯(cuò)強(qiáng)制停止,報(bào)錯(cuò)如下,相信有人已經(jīng)遇到過了這個(gè)問題。
999999 (..\src\mpsystem.c@1149): mpt_read: failed: errno = 10054
999999: mpt_read: error: read failed trying to read 4 bytes: Invalid argument
job aborted:
rank: node: exit code
0: FENG-PC: 123
1: FENG-PC: -1073741819: process 1 exited without calling finalize
2: FENG-PC: 123
3: FENG-PC: 123
4: FENG-PC: 123
5: FENG-PC: 123
接下來講述一下我這大半個(gè)月折騰的過程。
首先這個(gè)問題舊電腦(已經(jīng)被淘汰了,太老了)上沒有遇到,實(shí)驗(yàn)室其他人有遇到過的,但很少,不頻繁,他們的情況是重啟電腦,然后就解決了??上业腻e(cuò)誤并沒有解決,問題依舊,非常頻繁。
網(wǎng)上好多人遇到這個(gè)問題是帶UDF情況下的,我的不使用UDF,而且我非常確定我的網(wǎng)格和條件都沒有問題。
網(wǎng)上給出的第一個(gè)建議就是重裝軟件。重裝了N次,問題依舊
網(wǎng)上給出的第二個(gè)建議就是重裝系統(tǒng)。由于某些原因重裝了2次,正版盜版都用過了,問題依舊
網(wǎng)上給出的第三個(gè)建議就是內(nèi)存不夠了,16G不夠用,人人網(wǎng)小組里確實(shí)有人通過加大內(nèi)存解決了這個(gè)問題,但是我可以很負(fù)責(zé)得說這個(gè)和內(nèi)存不夠沒有關(guān)系,稍后分析,我16G內(nèi)存連400萬網(wǎng)格都能算,所以網(wǎng)上各種有關(guān)內(nèi)存大小和網(wǎng)格數(shù)量的說法我表示懷疑。
網(wǎng)上給出的第四個(gè)建議就是換版本。目前我的電腦里已經(jīng)同時(shí)有12.1、13.0、14.0三個(gè)版本了,可以確定并不是軟件不穩(wěn)定的問題,確實(shí)最后的解決辦法和版本有點(diǎn)關(guān)系,但核心問題并不是版本問題。
網(wǎng)上給出的第五個(gè)建議就是換系統(tǒng)。這個(gè)我目前還沒這個(gè)打算,用習(xí)慣了windows,不想換,而且我懷疑換系統(tǒng)并不能徹底解決問題。
還有一個(gè)說法,是ANSYS安裝時(shí)自帶的.NET Framework的版本低于系統(tǒng)版本,在安裝時(shí)沒有打開.NET Framework的功能,在‘控制面板-程序-程序和功能-打開或關(guān)閉windows功能’里點(diǎn)選上.NET Framework的相關(guān)選項(xiàng)來解決問題。通過測(cè)試可以確定并不是這個(gè)問題,我編程需求所以裝有VS2010,好處是裝VS的時(shí)候C++等等各種組件就一應(yīng)俱全。
最后只能自己找問題了,這種報(bào)錯(cuò),最表面的原因就是并行過程中,遠(yuǎn)程主機(jī)強(qiáng)制關(guān)閉了,單機(jī)并行時(shí)的遠(yuǎn)程主機(jī)也就是本機(jī)host。對(duì)這種報(bào)錯(cuò)的理解如下。
第一,網(wǎng)格質(zhì)量,在我的理解網(wǎng)格有問題只能引起發(fā)散,但不排除網(wǎng)格造成的數(shù)據(jù)溢出,并行中的某個(gè)線程中的數(shù)據(jù)出現(xiàn)溢出,線程之間的通訊發(fā)生故障,并行中斷。
第二,內(nèi)存問題,內(nèi)存讀取問題也會(huì)造成線程之間的通訊故障。我的內(nèi)存條我確定沒有壞,但是4*4的雙通道讓我很擔(dān)心,網(wǎng)上加大內(nèi)存的解決方案我認(rèn)為是內(nèi)存數(shù)據(jù)交換方式改變才解決了問題,并不是內(nèi)存變大了。內(nèi)存不足fluent是有相應(yīng)的報(bào)錯(cuò)的,和這里的并行錯(cuò)誤無關(guān)。
第三,CPU問題,我也懷疑過,窮啊,第一次用i7-2600,一共8個(gè)線程,我并行的時(shí)候用6個(gè)線程,難道線程之間通訊有故障,后來發(fā)現(xiàn)確實(shí)和這個(gè)有關(guān)系,但CPU本身沒有問題。
第四,單雙精度問題,這個(gè)是有可能造成數(shù)據(jù)溢出的,并導(dǎo)致并行通訊中斷。
第五,網(wǎng)絡(luò)問題,這個(gè)也很常見,針對(duì)插著網(wǎng)線計(jì)算的同學(xué),聯(lián)網(wǎng)狀態(tài)下,各個(gè)線程之間的通訊目標(biāo)IP是上網(wǎng)的那個(gè)IP,用360的查看網(wǎng)絡(luò)連接你就知道了,網(wǎng)絡(luò)不穩(wěn)定或者局域網(wǎng)攻擊會(huì)使并行中斷,推薦使用360的局域網(wǎng)防護(hù)。
第六,許可文件,這個(gè)問題可能性很小,安裝14.0使用的許可文件是可以支持到12.0的,包括并行。
后來又各種測(cè)試,開始嘗試調(diào)整MPI選項(xiàng)
在裝ANSYS時(shí)有MPI的安裝選項(xiàng),我裝了是沒錯(cuò),但是并不好用。
發(fā)現(xiàn)ansys各個(gè)版本的fluent所支持的并行通訊協(xié)議不同。在打開fluent的界面里,找到并行設(shè)置里的MPI選項(xiàng),14.0支持msmpi(不可用,需自己下載安裝)、pcmpi(已安裝,默認(rèn))、intel(需要在安裝時(shí)自己裝)三種,13.0支持msmpi(不可用,需自己下載安裝)、hp(默認(rèn),需要在安裝時(shí)自己裝)、intel(需要在安裝時(shí)自己裝),12.0支持mpich2、msmpi、hp。
我一直使用的mpi是軟件默認(rèn)的,13.0和14.0裝的intel-mpi版本不一樣,于是又特地裝了14.0的intel-mpi,用intel的mpi進(jìn)行并行計(jì)算,也是隨機(jī)中斷報(bào)錯(cuò)。
最后在13.0的hp-mpi的方式下用單精度計(jì)算,貌似問題得到了改善,但這個(gè)情況下,偶爾會(huì)出現(xiàn)計(jì)算卡住的情況,可以通過暫停計(jì)算來解決,但是只要卡住,暫停后再繼續(xù)出去20來步,fluent就自行退出了,沒有報(bào)錯(cuò)。而且沒有嘗試雙精度。
目前暫用13.0的hp-mpi外加自動(dòng)保存來往下推進(jìn)了。
另外,還有一些需要說一說的
1、自動(dòng)保存的cas會(huì)有打不開的時(shí)候,所以備份cas的時(shí)候不要備份自動(dòng)保存的,而是備份初始的cas,配合自動(dòng)保存的dat使用;
2、并行的初始cas是不能直接在并行fluent里設(shè)置的,需要先在串行fluent里把條件設(shè)好并初始化,然后保存,然后再用并行fluent來讀取,這個(gè)應(yīng)該很多人都知道
3、還有各種mpi并行通訊機(jī)制,在半個(gè)多月的折騰過程中,發(fā)現(xiàn)hp-mpi是效率最高的,相比intel-mpi能非常明顯得提高并行計(jì)算速度。
4、帶udf出現(xiàn)這個(gè)報(bào)錯(cuò),雖然UDF通過編譯了,但還是第一時(shí)間檢查UDF寫得對(duì)不對(duì),UDF編譯的數(shù)據(jù)在計(jì)算中稍有問題都能引起各線程之間的通訊中斷,然后fluent就出錯(cuò)了。
這大半個(gè)月給我折騰死了,真鬧心,死貴死貴的CPU外加一年又一年的ansys版本更新,居然連個(gè)并行通訊協(xié)議的支持都做得不好,新機(jī)器散熱還不好,光改造機(jī)箱就給折騰了好久,目前也就暫時(shí)解決這個(gè)報(bào)錯(cuò),不知道繼續(xù)算下去會(huì)不會(huì)出問題了。
也算是總結(jié)一下能找到和能想到的處理方法,供交流。
最新的情況是,又找到一個(gè)可能的原因,很有可能是windows的防火墻沒有徹底關(guān)閉。我用的是未刪減過的正版系統(tǒng),在‘控制面板-系統(tǒng)與安全-windows防火墻’這里看到的防火墻是關(guān)閉的,但事實(shí)上并沒有徹底關(guān)閉,繼續(xù)點(diǎn)擊高級(jí)設(shè)置,就會(huì)進(jìn)入到‘高級(jí)安全windows防火墻’的設(shè)置界面,可以發(fā)現(xiàn)其中的‘域配置文件’這一項(xiàng)的防火墻并沒有關(guān)閉,必須在這個(gè)界面里繼續(xù)點(diǎn)擊‘windows防火墻屬性’才能徹底關(guān)閉域配置文件的防火墻。
貌似‘域配置文件’防火墻的設(shè)置能夠通過HP-MPI的并行數(shù)據(jù),但是會(huì)限制intel-MPI的并行數(shù)據(jù)。
10月份總算是找到了我問題所在,之前使用的HP-MPI的辦法只是折中的解決辦法,不能長期應(yīng)對(duì)。
之前有說到對(duì)這個(gè)錯(cuò)誤的理解,其中第二點(diǎn)是這樣的
第二,內(nèi)存問題,內(nèi)存讀取問題也會(huì)造成線程之間的通訊故障。我的內(nèi)存條我確定沒有壞,但是4*4的雙通道讓我很擔(dān)心,網(wǎng)上加大內(nèi)存的解決方案我認(rèn)為是內(nèi)存數(shù)據(jù)交換方式改變才解決了問題,并不是內(nèi)存變大了。內(nèi)存不足fluent是有相應(yīng)的報(bào)錯(cuò)的,和這里的并行錯(cuò)誤無關(guān)。
最終確定是我的主板4*4通道的問題,雙通道4個(gè)內(nèi)存條全部插滿,主板可能有缺陷,在并行計(jì)算是內(nèi)存的信息吞吐量巨大,4個(gè)內(nèi)存之間的信息交換有故障,這個(gè)在正常使用電腦時(shí)顯示不出來,只有內(nèi)存出入大量數(shù)據(jù)時(shí)才會(huì)出現(xiàn)問題。
HP-MPI的并行機(jī)制計(jì)算慢一些,但貌似減少這種錯(cuò)誤的發(fā)生,我的問題出在硬件上,沒辦法只能取下兩個(gè)條子,現(xiàn)在是2*4單通道的8G內(nèi)存,我的問題就基本解決了。
當(dāng)然,不同的人出現(xiàn)這個(gè)錯(cuò)誤原因可能不一樣,這個(gè)帖子就是想貼出我的排查過程,供各種蟲們參考參考
截止12月沒有出現(xiàn)報(bào)錯(cuò),問題解決
開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才
相關(guān)標(biāo)簽搜索:fluent并行錯(cuò)誤errno = 10054的解決辦法 Fluent培訓(xùn) Fluent流體培訓(xùn) Fluent軟件培訓(xùn) fluent技術(shù)教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學(xué)反應(yīng) fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析
編輯