计算化学公社

标题: 求助:CP2K+OpenMPI通信器泄漏问题:运行NEB后总是出现MPI_ABORT [打印本页]

作者
Author:
lightman    时间: yesterday 09:56
标题: 求助:CP2K+OpenMPI通信器泄漏问题:运行NEB后总是出现MPI_ABORT
CP2K 2026.1 + OpenMPI 5.0.9 运行 NEB 计算,程序报错:
mp_world_finalize: assert failed: leaking communicators 1
随后 MPI_ABORT 终止所有进程。


具体显示问题如下:


*******************************************************************************
*   ___                                                                       *
*  /   \                                                                      *
* [ABORT]                                                                     *
*  \___/        mp_world_finalize: assert failed: leaking communicators 1     *
*    |                                                                        *
*  O/|                                                                        *
* /| |                                                                        *
* / \                                          mpiwrap/message_passing.F:1364 *
*******************************************************************************


--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 15 in communicator MPI_COMM_WORLD
  Proc: [[12098,1],15]
  Errorcode: 1


NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
prterun has exited due to process rank 15 with PID 0 on node localhost calling
"abort". This may have caused other processes in the application to be
terminated by signals sent by prterun (as reported here).
--------------------------------------------------------------------------



作者
Author:
Uus/pMeC6H4-/キ    时间: yesterday 10:38
OpenMPI是随toolchain安装的还是集群已经提前安装好的?集群上有没有除这个OpenMPI外的其他预装MPI库,比如Intel OneAPI之类的?有没有module管理编译器、MPI库等环境的配置?
作者
Author:
lightman    时间: yesterday 10:58
Uus/pMeC6H4-/キ 发表于 2026-4-16 10:38
OpenMPI是随toolchain安装的还是集群已经提前安装好的?集群上有没有除这个OpenMPI外的其他预装MPI库,比如 ...

OpenMPI是随toolchain安装的。

作者
Author:
Uus/pMeC6H4-/キ    时间: yesterday 11:29
lightman 发表于 2026-4-16 10:58
OpenMPI是随toolchain安装的。

我不喜欢见到我的帖子没有充分阅读的情形,我的第一个问题有所回答不代表后面两个问题可以不理睬,尤其是一开始的问题描述就比较模糊、非常需要后续回答补充关键信息的情况。如果你对服务器具体是哪个Linux系统、有没有其他编译器和MPI等环境存在、有没有module管理环境等问题不熟悉所以没有回应,可以先去咨询工程师/管理员搞清楚了再来回复。我也不知道你编译toolchain以及运行CP2K时具体用的什么版本的什么fortran和c/c++编译器。
作者
Author:
lightman    时间: yesterday 12:38
Uus/pMeC6H4-/キ 发表于 2026-4-16 11:29
我不喜欢见到我的帖子没有充分阅读的情形,我的第一个问题有所回答不代表后面两个问题可以不理睬,尤其是 ...

我使用自己组装的服务器,系统是Rocky linux 10.1,没有其他编译器和MPI等环境存在、没有module管理编译器、MPI库。gcc (GCC) 14.3.1 20250617 (Red Hat 14.3.1-2);GNU Fortran (GCC) 14.3.1 20250617 (Red Hat 14.3.1-2)。
作者
Author:
Uus/pMeC6H4-/キ    时间: yesterday 12:52
lightman 发表于 2026-4-16 12:38
我使用自己组装的服务器,系统是Rocky linux 10.1,没有其他编译器和MPI等环境存在、没有module管理编译 ...

自己组装的服务器的CPU、主板和内存规格如何,是否涉及跨节点/跨CPU的通讯?该故障能否用其他需要多进程/多线程并行的任务(不一定是NEB)复现?能不能举一个计算量很小(体系越简单、需要并行的进程/线程数越小越好)却又能稳定重复该故障的完整输入输出文件(不一定是NEB)作为例子?

以上所有内容都是早该在1楼就交代清楚的……
作者
Author:
lightman    时间: yesterday 13:15
Uus/pMeC6H4-/キ 发表于 2026-4-16 12:52
自己组装的服务器的CPU、主板和内存规格如何,是否涉及跨节点/跨CPU的通讯?该故障能否用其他需要多进程/ ...

这个问题和“服务器的CPU、主板和内存规格”有关系吗?
“以上所有内容都是早该在1楼就交代清楚的……”,我要是懂这么多我还发帖吗?
作者
Author:
lightman    时间: yesterday 13:16
Uus/pMeC6H4-/キ 发表于 2026-4-16 12:52
自己组装的服务器的CPU、主板和内存规格如何,是否涉及跨节点/跨CPU的通讯?该故障能否用其他需要多进程/ ...

其他单点能、结构优化等任务没有报错
作者
Author:
lightman    时间: yesterday 13:19
Uus/pMeC6H4-/キ 发表于 2026-4-16 12:52
自己组装的服务器的CPU、主板和内存规格如何,是否涉及跨节点/跨CPU的通讯?该故障能否用其他需要多进程/ ...

不存在跨节点/跨CPU通讯
作者
Author:
Uus/pMeC6H4-/キ    时间: yesterday 14:25
lightman 发表于 2026-4-16 13:15
这个问题和“服务器的CPU、主板和内存规格”有关系吗?
“以上所有内容都是早该在1楼就交代清楚的……” ...

MPI通讯问题有很多潜在的诱因,至少提供足够前提信息后可以尝试排除编译器不兼容、自定义安装的OpenMPI没调配好、Linux环境存在冲突、一开始CP2K就没有编译成功、特定硬件体质缺陷等等浅显的干扰因素。求助时应当提供完整信息这点在http://bbs.keinsci.com/thread-25787-1-1.html有详细阐述,在本帖的语境下当然可能与自己组装的服务器的特定硬件规格相关。

没有可以复现问题的完整输入文件的话开发者是很难排查问题、相应改进的,甚至都未必能确认故障出在软件上。

“其他单点能、结构优化等任务没有报错”的时候,和报错的NEB任务是用的相同进程/线程并行设置、算的相似大小的体系吗?将报错的NEB任务的并行进程/线程分配数量降低是否可能避开报错,还是凡NEB任务需要多image并行计算无论数量多少都会产生报错?
作者
Author:
lightman    时间: yesterday 14:51
Uus/pMeC6H4-/キ 发表于 2026-4-16 14:25
MPI通讯问题有很多潜在的诱因,至少提供足够前提信息后可以尝试排除编译器不兼容、自定义安装的OpenMPI没 ...

好的,谢谢,我再检查测试一下
作者
Author:
Stardust0831    时间: yesterday 18:37
lightman 发表于 2026-4-16 14:51
好的,谢谢,我再检查测试一下

有必要提供具体硬件型号和报错的cp2k输入文件。
最起码说清楚是哪个cpu、物理内存多大。
如果结构敏感可以换个不敏感的结构尝试复现,好让我们基于你出问题的输入文件复现报错。
作者
Author:
UW_0728.    时间: yesterday 21:40
CP2K源代码相应部分有注释,这是一个程序bug,只不过触发概率很低:
  1.          IF (debug_comm_count /= 0) THEN
  2.             ! A bug, we're leaking or double-freeing communicators. Needs to be fixed where the leak happens.
  3.             ! Memory leak checking might be helpful to locate the culprit
  4.             WRITE (unit=debug_comm_count_char, FMT='(I2)') debug_comm_count
  5.             CALL cp_abort(__LOCATION__, "mp_world_finalize: assert failed:"// &
  6.                           " leaking communicators "//ADJUSTL(TRIM(debug_comm_count_char)))
  7.          END IF
复制代码





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3