fluent并行错误errno = 10054的解决办法

2017-04-03  by:CAE仿真在线  来源:互联网

目前解决方法:采用 Fluent的 “自动保存”功能,从非正常退出处接着算。。。。
一个月前接手的项目,外加换了新电脑,因为前期的验证算例网格也不是很多,所以也就没有使用并行计算,单线程串行计算效率也不低,然后具体的方案出来以后,一共一百来个算例定了下来,开始使用并行计算,然后FLUENT就开始了无尽的抽搐。
我的电脑刚配的新的,i7-2600(4核8线程),16G内存(4*4),华硕Z68的主板。算例为100万网格,FLUENT不定时报错强制停止,报错如下,相信有人已经遇到过了这个问题。
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
接下来讲述一下我这大半个月折腾的过程。
首先这个问题旧电脑(已经被淘汰了,太老了)上没有遇到,实验室其他人有遇到过的,但很少,不频繁,他们的情况是重启电脑,然后就解决了。可惜我的错误并没有解决,问题依旧,非常频繁。
网上好多人遇到这个问题是带UDF情况下的,我的不使用UDF,而且我非常确定我的网格和条件都没有问题。
网上给出的第一个建议就是重装软件。重装了N次,问题依旧
网上给出的第二个建议就是重装系统。由于某些原因重装了2次,正版盗版都用过了,问题依旧
网上给出的第三个建议就是内存不够了,16G不够用,人人网小组里确实有人通过加大内存解决了这个问题,但是我可以很负责得说这个和内存不够没有关系,稍后分析,我16G内存连400万网格都能算,所以网上各种有关内存大小和网格数量的说法我表示怀疑。
网上给出的第四个建议就是换版本。目前我的电脑里已经同时有12.1、13.0、14.0三个版本了,可以确定并不是软件不稳定的问题,确实最后的解决办法和版本有点关系,但核心问题并不是版本问题。
网上给出的第五个建议就是换系统。这个我目前还没这个打算,用习惯了windows,不想换,而且我怀疑换系统并不能彻底解决问题。
还有一个说法,是ANSYS安装时自带的.NET Framework的版本低于系统版本,在安装时没有打开.NET Framework的功能,在‘控制面板-程序-程序和功能-打开或关闭windows功能’里点选上.NET Framework的相关选项来解决问题。通过测试可以确定并不是这个问题,我编程需求所以装有VS2010,好处是装VS的时候C++等等各种组件就一应俱全。
最后只能自己找问题了,这种报错,最表面的原因就是并行过程中,远程主机强制关闭了,单机并行时的远程主机也就是本机host。对这种报错的理解如下。
第一,网格质量,在我的理解网格有问题只能引起发散,但不排除网格造成的数据溢出,并行中的某个线程中的数据出现溢出,线程之间的通讯发生故障,并行中断。
第二,内存问题,内存读取问题也会造成线程之间的通讯故障。我的内存条我确定没有坏,但是4*4的双通道让我很担心,网上加大内存的解决方案我认为是内存数据交换方式改变才解决了问题,并不是内存变大了。内存不足fluent是有相应的报错的,和这里的并行错误无关。
第三,CPU问题,我也怀疑过,穷啊,第一次用i7-2600,一共8个线程,我并行的时候用6个线程,难道线程之间通讯有故障,后来发现确实和这个有关系,但CPU本身没有问题。
第四,单双精度问题,这个是有可能造成数据溢出的,并导致并行通讯中断。
第五,网络问题,这个也很常见,针对插着网线计算的同学,联网状态下,各个线程之间的通讯目标IP是上网的那个IP,用360的查看网络连接你就知道了,网络不稳定或者局域网攻击会使并行中断,推荐使用360的局域网防护。
第六,许可文件,这个问题可能性很小,安装14.0使用的许可文件是可以支持到12.0的,包括并行。
后来又各种测试,开始尝试调整MPI选项
在装ANSYS时有MPI的安装选项,我装了是没错,但是并不好用。
发现ansys各个版本的fluent所支持的并行通讯协议不同。在打开fluent的界面里,找到并行设置里的MPI选项,14.0支持msmpi(不可用,需自己下载安装)、pcmpi(已安装,默认)、intel(需要在安装时自己装)三种,13.0支持msmpi(不可用,需自己下载安装)、hp(默认,需要在安装时自己装)、intel(需要在安装时自己装),12.0支持mpich2、msmpi、hp。
我一直使用的mpi是软件默认的,13.0和14.0装的intel-mpi版本不一样,于是又特地装了14.0的intel-mpi,用intel的mpi进行并行计算,也是随机中断报错。
最后在13.0的hp-mpi的方式下用单精度计算,貌似问题得到了改善,但这个情况下,偶尔会出现计算卡住的情况,可以通过暂停计算来解决,但是只要卡住,暂停后再继续出去20来步,fluent就自行退出了,没有报错。而且没有尝试双精度。
目前暂用13.0的hp-mpi外加自动保存来往下推进了。
另外,还有一些需要说一说的
1、自动保存的cas会有打不开的时候,所以备份cas的时候不要备份自动保存的,而是备份初始的cas,配合自动保存的dat使用;
2、并行的初始cas是不能直接在并行fluent里设置的,需要先在串行fluent里把条件设好并初始化,然后保存,然后再用并行fluent来读取,这个应该很多人都知道
3、还有各种mpi并行通讯机制,在半个多月的折腾过程中,发现hp-mpi是效率最高的,相比intel-mpi能非常明显得提高并行计算速度。
4、带udf出现这个报错,虽然UDF通过编译了,但还是第一时间检查UDF写得对不对,UDF编译的数据在计算中稍有问题都能引起各线程之间的通讯中断,然后fluent就出错了。
这大半个月给我折腾死了,真闹心,死贵死贵的CPU外加一年又一年的ansys版本更新,居然连个并行通讯协议的支持都做得不好,新机器散热还不好,光改造机箱就给折腾了好久,目前也就暂时解决这个报错,不知道继续算下去会不会出问题了。
也算是总结一下能找到和能想到的处理方法,供交流。
最新的情况是,又找到一个可能的原因,很有可能是windows的防火墙没有彻底关闭。我用的是未删减过的正版系统,在‘控制面板-系统与安全-windows防火墙’这里看到的防火墙是关闭的,但事实上并没有彻底关闭,继续点击高级设置,就会进入到‘高级安全windows防火墙’的设置界面,可以发现其中的‘域配置文件’这一项的防火墙并没有关闭,必须在这个界面里继续点击‘windows防火墙属性’才能彻底关闭域配置文件的防火墙。
貌似‘域配置文件’防火墙的设置能够通过HP-MPI的并行数据,但是会限制intel-MPI的并行数据。
10月份总算是找到了我问题所在,之前使用的HP-MPI的办法只是折中的解决办法,不能长期应对。
之前有说到对这个错误的理解,其中第二点是这样的
第二,内存问题,内存读取问题也会造成线程之间的通讯故障。我的内存条我确定没有坏,但是4*4的双通道让我很担心,网上加大内存的解决方案我认为是内存数据交换方式改变才解决了问题,并不是内存变大了。内存不足fluent是有相应的报错的,和这里的并行错误无关。
最终确定是我的主板4*4通道的问题,双通道4个内存条全部插满,主板可能有缺陷,在并行计算是内存的信息吞吐量巨大,4个内存之间的信息交换有故障,这个在正常使用电脑时显示不出来,只有内存出入大量数据时才会出现问题。
HP-MPI的并行机制计算慢一些,但貌似减少这种错误的发生,我的问题出在硬件上,没办法只能取下两个条子,现在是2*4单通道的8G内存,我的问题就基本解决了。
当然,不同的人出现这个错误原因可能不一样,这个帖子就是想贴出我的排查过程,供各种虫们参考参考
截止12月没有出现报错,问题解决

开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:fluent并行错误errno = 10054的解决办法 Fluent培训 Fluent流体培训 Fluent软件培训 fluent技术教程 fluent在线视频教程 fluent资料下载 fluent分析理论 fluent化学反应 fluent软件下载 UDF编程代做 Fluent、CFX流体分析 HFSS电磁分析 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com