You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下Sbatch提交Srun作业输出数据重复的脚本修正求助

问题解决:Slurm srun提交VASP作业输出重复修复方案

问题根因

  • Intel MPI未正确对接Slurm的PMI接口,每个MPI进程启动时独立打印报错信息
  • 默认配置下所有MPI进程都会向标准输出写入内容,多进程输出叠加导致日志重复
  • 未限制VASP仅主进程(rank 0)打印计算日志

修复步骤

1. 配置Intel MPI与Slurm的对接

先在集群计算节点执行find / -name "libpmi2.so" 2>/dev/null确认PMI库路径,绝大多数集群通用默认路径为/usr/lib64/slurm/libpmi2.so,配置后即可消除PMI相关报错。

2. 限制仅主进程输出

设置Intel MPI环境变量,仅允许rank 0进程打印标准输出与标准错误,直接解决多进程重复输出问题。

可选优化

如果使用VASP 5.4及以上版本,可在INCAR中添加NWRITE = 1进一步减少冗余日志输出,不需要修改源码即可生效。

修改后的完整提交脚本

#!/bin/bash
#SBATCH --partition=short
#SBATCH --job-name="vasp"
#SBATCH --nodes=2
#SBATCH --time=24:00:00
#SBATCH --constraint=ib
#SBATCH --exclusive
#SBATCH --err=std.err
#SBATCH --output=std.out
#----------------------------------------------------------#
export OMP_NUM_THREADS=1
# 新增:配置Intel MPI对接Slurm PMI接口,路径请根据集群实际情况调整
export I_MPI_PMI_LIBRARY=/usr/lib64/slurm/libpmi2.so
# 新增:限制仅rank 0进程输出标准流
export I_MPI_HYDRA_PRINT_RANK=0
#----------------------------------------------------------#
echo "The job ${SLURM_JOB_ID} is running on ${SLURM_JOB_NODELIST}"
#----------------------------------------------------------#
source /shared/centos7/intel/oneapi/2021.1_u9-base/setvars.sh
# 若仍有PMI报错可在srun参数中添加--mpi=pmi2
srun --ntasks=40 --hint=nomultithread --ntasks-per-node=20 --ntasks-per-socket=2 --ntasks-per-core=1 --mem-bind=v,local /work/bin/v_c

验证说明

提交作业后查看std.out,只会保留单份计算日志,PMI启动报错也会同步消失。如果你的集群使用PMI v1而非v2,将libpmi2.so替换为libpmi.so即可。

内容的提问来源于stack exchange,提问作者Kieran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:45:03