SLURM集群提交COMSOL作业出现PMPI_Init_thread错误如何解决
错误含义
Fatal error in PMPI_Init_thread: Other MPI error, error stack:
MPIR_Init_thread(805): fail failed
MPID_Init(1743)......: channel initialization failed
MPID_Init(2137)......: PMI_Init returned -1
上述报错是MPI初始化阶段的致命错误,核心触发原因为PMI_Init returned -1。PMI(进程管理接口)是MPI实现与SLURM等集群调度系统通信的标准接口,返回-1代表当前调用的MPI库无法和SLURM的PMI服务完成握手,无法获取调度系统分配的进程资源信息,最终导致MPI通道初始化失败。
触发该问题的核心原因是你提交脚本中手动加载的外部OpenMPI库,和COMSOL 5.5自带的MPI版本不兼容,同时提交参数存在格式错误。
解决方案
- 移除冲突的外部MPI加载项
COMSOL 5.5自带匹配版本的MPI库,不需要手动加载外部Intel MPI、OpenMPI依赖,删除脚本中如下两行即可:
module load intel/2019b module load OpenMPI/4.1.1
- 修正COMSOL运行命令的格式与参数
你当前脚本中-outputfile参数后的输出路径被拆分为两行,会被系统识别为无效参数;同时不需要手动指定-nn、-nnhost参数,-mpibootstrap slurm会自动读取SLURM分配的核心数,修正后的运行命令如下:
comsol batch -mpibootstrap slurm -inputfile myfile.mph -outputfile myfile.output.mph -study std1 -batchlog myfile.mph.log
调整冗余的SBATCH配置
你已经配置了--exclusive参数独占节点,不需要额外限制--mem=20G,可直接删除该参数使用节点全部内存;同时确认你提交的my_partition分区单节点物理核心数为20,和--ntasks-per-node=20匹配,避免核心数不匹配导致的MPI启动失败。排查兜底方案
如果完成上述修改后仍然报错,可在COMSOL运行命令中添加-mpidebug 1参数,输出详细的MPI启动日志定位具体问题。
内容的提问来源于stack exchange,提问作者Raamses Díaz
相关产品推荐
相关产品推荐

