MPI遇到的问题:无效信息对象

在linux上正常运行代码包(没有改动!已经编译好了),以前都没啥事,突然出现了这种问题

[server:172796] *** An error occurred in MPI_Info_get
[server:172796] *** reported by process [3818651649,0]
[server:172796] *** on communicator MPI_COMM_WORLD
[server:172796] *** MPI_ERR_INFO: invalid info object
[server:172796] *** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort,
[server:172796] *** and potentially your MPI job)

之前有一段时间在编译代码的时候曾遇到找不到mpi.mod的问题,今天不知道为啥突然找到了,可是用mpirun跑的时候又卡出了以前没出现过的问题
我查了一下,应该是说信息对象无效,但是我不明白为什么会无效,或者该怎么解决?
卡住的地方代码如下:(fortran)
……
if(nf90mpi_create(MPI_COMM_WORLD, trim(fullname), NF90_CLOBBER, MPI_INFO_NULL, ncid)/= NF90_NOERR) then
call MPI_ABORT(MPI_COMM_WORLD, 1, err)
end if

我检查了一下,fullname可以正常识别,所以真的不知道为啥无效QAQ可以帮帮我吗?谢谢!

  • 这篇文章:mpi环境配置 也许能够解决你的问题,你可以看下

这个错误可能是由于MPI库或环境的问题导致的。有几种可能的原因和解决方法:

MPI版本不兼容或MPI库安装有问题。你可以尝试重新安装或升级MPI库,或者检查是否正确设置了MPI环境变量。
MPI进程之间的通信出现了问题。你可以检查MPI_COMM_WORLD中的进程数量是否正确,或者尝试在MPI_Info_create之前设置MPI_Init。
MPI_Info对象中传递了错误的参数。你可以检查MPI_Info对象中传递的参数是否正确,或者尝试使用MPI_INFO_NULL代替MPI_Info对象。
你的代码中出现了MPI_Info_get错误,可能是由于MPI_Info对象无效导致的。你可以尝试使用MPI_INFO_NULL代替MPI_Info对象,看看是否能够解决问题。代码修改如下:

if(nf90mpi_create(MPI_COMM_WORLD, trim(fullname), NF90_CLOBBER, MPI_INFO_NULL, ncid)/= NF90_NOERR) then
call MPI_ABORT(MPI_COMM_WORLD, 1, err)
end if

如果问题仍然存在,你可以尝试重新安装MPI库或者检查MPI环境设置是否正确。

用排除法确定出错的具体函数。比如
删除判断条件,只运行call MPI_ABORT(MPI_COMM_WORLD, 1, err)试试有没有报错。