在IntelMPI内存泄漏时,将程序上传到OpenMPI会给出初始化错误

我是一名研究生(硕士),并使用内部代码运行使用MPI的模拟。之前,我在用于访问的超级计算机上使用了OpenmPI,并且由于它已关闭,因此我一直试图切换到另一台安装了Intel MPI的超级计算机。问题是,早先运行良好的相同代码现在在经过一定数量的迭代(时间步长)后会导致内存泄漏。由于代码相对较大,而且我对MPI的知识非常基础,因此调试它非常困难。 因此,我将OpenmPI安装到了我正在使用的这台新超级计算机上,但是在执行时它给出以下错误消息,然后终止:

无效的PE数 请检查分区模式或PE的数量

注意:该错误消息在我用来运行此案例的节点数(此处为8个)中重复出现。使用mpif90和-fopenmp进行编译,以实现线程并行化。

实际上,不能保证在OpenmPI上运行它不会导致内存泄漏,但是我觉得值得一试,因为它早先运行得很好。

PS:在Intel MPI上,这是我得到的错误(与mpiifort一起使用-qopenmp编译)

在节点16上终止(941211497)(通信0中的等级16):PMPI_Isend中的致命错误:>未知错误类,错误堆栈: PMPI_Isend(152)...........:MPI_Isend(buf = 0x2aba1cbc8060,count = 4900,dtype = 0x4c000829,dest = 20,tag = 0,MPI_COMM_WORLD,request = 0x7ffec8586e5c)失败 MPID_Isend(662)...........: MPID_isend_unsafe(282)....: MPIDI_OFI_send_normal(305):为请求对象分配内存时发生故障 节点17(通讯0中的等级17)上的Abort(203013993):PMPI_Isend中的致命错误:>未知错误类,错误堆栈: PMPI_Isend(152)........:MPI_Isend(buf = 0x2b38c479c060,count = 4900,dtype = 0x4c000829,dest = 21,tag = 0,MPI_COMM_WORLD,request = 0x7fffc20097dc) MPID_Isend(662)...........: MPID_isend_unsafe(282)....: MPIDI_OFI_send_normal(305):为请求对象分配内存时发生故障 [mpiexec@cx0321.obcx] HYD_sock_write(../../../../../src/pm/i_hydra/libhydra/sock/hydra_sock_intel.c:357):写入错误(错误的文件描述符) [mpiexec@cx0321.obcx] cmd_bcast_root(../../../../../src/pm/i_hydra/mpiexec/mpiexec.c:164):将cmd 15发送到代理时出错 [mpiexec@cx0321.obcx] send_abort_rank_downstream(../../../../../src/pm/i_hydra/mpiexec/intel/i_mpiexec.c:557):无法向下游发送响应 [mpiexec@cx0321.obcx] control_cb(../../../../../src/pm/i_hydra/mpiexec/mpiexec.c:1576):无法将中止等级发送给下游 [mpiexec@cx0321.obcx] HYDI_dmx_poll_wait_for_event(../../../../../src/pm/i_hydra/libhydra/demux/hydra_demux_poll.c:79):回调返回了错误状态 [mpiexec@cx0321.obcx]主(../../../../../src/pm/i_hydra/mpiexec/mpiexec.c:1962):错误等待事件“

如果有人愿意看一下代码,我将很乐意提供。它是使用Fortran编写的,并带有用C编写的一些功能。由于这个问题,我的研究进展已被完全停止,并且我的实验室中没有人拥有足够的MPI经验来解决此问题。

yzg338 回答:在IntelMPI内存泄漏时,将程序上传到OpenMPI会给出初始化错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2654365.html

大家都在问