找回密码
 注册
查看: 3524|回复: 2

[问题求解] cfl3d_mpi运行时mpi出现问题,结果出现NaN,求大神解决!

[复制链接]
发表于 2015-10-14 16:59:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 yfmu 于 2015-10-15 19:24 编辑

编译和运行都在虚拟机中进行,其中:

    代码是6.3的,其他是:redhat linux 6, PGI v10 ,mpich2-1.1, cgns2.5-5。

    能够正常编译生成cfl3d_mpi,运行 mpirun -np X ./cfl3d_mpi <cfl3d.inp ,当X >= 4 时只计算几步mpi貌似就突然断掉,结果中出现NaN,最终导致程序退出(网格和边界设置等另外验证过,没有问题)。而奇怪的是X=2或3时可以正常计算完毕得到结果。
    求解决!
   
    编译参数见附件 makefile文件
   
    出问题的情况:
    运行: mpirun -n 4 ./cfl3d_mpi <cfl3d.inp
    输出:cfl3d-4.out  cfl3d-4.error

    正常不出问题的情况:
    运行: mpirun -n 3 ./cfl3d_mpi <cfl3d.inp 或 mpirun -n 2 ./cfl3d_mpi <cfl3d.inp
    输出:cfl3d-3.out
   
   

makefile

makefile
cfl3d.error-4.png
cfl3d.out-3.png
cfl3d.out-4.png
 楼主| 发表于 2015-10-14 18:49:43 | 显示全部楼层



自己先顶一下!求高人啊!难道是makefile里面的编译参数有问题?
 楼主| 发表于 2015-10-20 16:13:10 | 显示全部楼层



      问题已解决。
      注释掉makefile 中PREC_MPI后面的参数即可。该参数貌似是说编译时mpi精度为双精度(double),估计是和程序中某些东西(float)有冲突。
      另外,上一行的PREC若是-r8等双精度参数,编译成的程序运行也会出现问题,报错说是输出网格时单双精度不匹配,无法输出。
      以上个人理解,仅供参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表