yfmu 发表于 2015-10-14 16:59:47

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

本帖最后由 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.outcfl3d-4.error

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

yfmu 发表于 2015-10-14 18:49:43




自己先顶一下!求高人啊!难道是makefile里面的编译参数有问题?

yfmu 发表于 2015-10-20 16:13:10




      问题已解决。
      注释掉makefile 中PREC_MPI后面的参数即可。该参数貌似是说编译时mpi精度为双精度(double),估计是和程序中某些东西(float)有冲突。
      另外,上一行的PREC若是-r8等双精度参数,编译成的程序运行也会出现问题,报错说是输出网格时单双精度不匹配,无法输出。
      以上个人理解,仅供参考。
页: [1]
查看完整版本: cfl3d_mpi运行时mpi出现问题,结果出现NaN,求大神解决!