运行地球系统模型(CESM)时遭遇MPI执行错误求助
CESM本地运行I1850CLM50_004案例的MPI递归调用错误排查
这个错误并非案例只能在HPC集群运行,本地Ubuntu虚拟机完全可以运行该案例,问题大概率出在MPI配置或案例提交脚本的设置上,以下是具体排查和解决方向:
一、排查MPI库本身的有效性
- 确认本地MPI版本:执行
mpiexec --version,查看输出的MPI类型(OpenMPI/MPICH等)和版本号。部分旧版OpenMPI对嵌套MPI调用的支持存在问题,容易触发"mpiexec does not support recursive calls"错误。 - 验证MPI基础功能:编译运行一个简单的MPI Hello World程序,确认MPI库能正常工作:
如果该测试能正常输出各进程信息,说明MPI库安装本身无核心问题,问题出在CESM案例的配置逻辑上。# 编写hello.c示例代码 # #include <mpi.h> # #include <stdio.h> # int main(int argc, char** argv) { # MPI_Init(NULL, NULL); # int rank; # MPI_Comm_rank(MPI_COMM_WORLD, &rank); # printf("Hello world from rank %d\n", rank); # MPI_Finalize(); # return 0; # } mpicc -o hello hello.c mpiexec -n 4 ./hello
二、调整CESM案例的配置与提交逻辑
- 匹配MPI库配置:打开案例目录下的
env_run.xml,确认MPILIB参数与本地安装的MPI类型一致(例如本地装的是OpenMPI,就设置为<entry id="MPILIB" value="openmpi"/>);同时检查NODES、NTASKS参数,不要超过虚拟机的CPU核心数。 - 避免递归MPI调用:CESM的
case.submit脚本默认适配集群调度器(如Slurm),本地运行时可能会嵌套调用mpiexec。可以直接修改case.submit,跳过调度器逻辑,直接用mpiexec ./cesm.exe启动程序;或者调整env_batch.xml中的BATCH_SYSTEM参数为none,让脚本以本地模式运行。 - 解决PMIX存储错误:针对dstore_base.c第1709行的PMIX错误,可尝试设置环境变量绕过该问题:
设置后重新执行export PMIX_MCA_dstore=hash export PMIX_MCA_gds=hash./case.submit。
内容的提问来源于stack exchange,提问作者Aatreyee
相关产品推荐
相关产品推荐

