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
自己先顶一下!求高人啊!难道是makefile里面的编译参数有问题?
问题已解决。
注释掉makefile 中PREC_MPI后面的参数即可。该参数貌似是说编译时mpi精度为双精度(double),估计是和程序中某些东西(float)有冲突。
另外,上一行的PREC若是-r8等双精度参数,编译成的程序运行也会出现问题,报错说是输出网格时单双精度不匹配,无法输出。
以上个人理解,仅供参考。
页:
[1]