我有一个很大的程序(一个模拟代码),在模拟的每个时间步骤中进行多次MPI通信。 我最近将桌面从Ubuntu 16.04更新到了18.04,从那时起,大约一个小时的运行时间和数千个时间步之后,我的代码崩溃了。如果我重新运行完全相同的初始条件,则代码不会在同一时间步完全崩溃,而是总会出现很小的变化。我得到的错误是:
节点15(通讯0中的等级15)上的异常中止(873060101):PMPI_Recv中的致命错误:无效的通信器,错误堆栈: PMPI_Recv(171):MPI_Recv(buf = 0x4b46a00,count = 36912,MPI_DOUBLE,src = 14,tag = 25,MPI_COMM_WORLD,status = 0x1)失败 PMPI_Recv(103):无效的传播者 [cli_15]:读取行失败
在我代码中的所有通信中,我始终使用默认的MPI_COMM_WORLD通信器,并且从不创建新的通信器。我尝试格式化桌面并进行全新安装,但没有帮助。我正在使用最新版本(2019更新2)的Intel c ++编译器和MPI库。使用tag = 25的函数使用MPI_Isend发送数据,并使用MPI_Recv接收数据。当我在大型群集上运行代码时,我永远也不会崩溃。 有什么想法导致此错误吗?
没事