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

Slurm脚本在Thin节点运行Reduce基准测试失败求助

Slurm任务在Thin节点运行osu_reduce时异常终止排查

问题描述

运行以下Slurm脚本时,任务启动约4秒后即终止,既未生成包含测试数据的output_file,也未产生Slurm的输出/错误文件。该脚本在FAT节点(每节点36任务配置)可正常运行,Thin节点上执行osu-bcast算法也无问题,但Thin节点运行reduce时失败。集群规则为:任务数>24使用FAT节点,否则使用Thin节点,程序逻辑无明显问题,怀疑是Slurm或集群配置相关问题。

测试脚本

#!/bin/bash
#SBATCH --job-name=reduce_thin_benchmark
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=24 
#SBATCH --time=02:00:00
#SBATCH --partition=THIN
#SBATCH --exclusive


module load openMPI/5.0.5 # or alternative version 

collective_path="../benchmark/osu-micro-benchmarks-7.5.1/libexec/osu-micro-benchmarks/mpi/collective" 
reduce_path="$collective_path/osu_reduce" 
output_file="../results/reduce_thin.csv" 

# Header for CSV file 
echo "Algorithm,Processes,Size,AvgLatency,MinLatency,MaxLatency,Iter,Q25,Q50,Q75,Q90,Q95" > $output_file 
# Algorithms to be tested 
declare -A algorithms 
algorithms[0]="default"

warmup=1000
repetitions=1000
min_processes=2
max_processes=48

for alg in "${!algorithms[@]}" 
do 
    for ((processes=$min_processes; processes<=$max_processes; processes+=2)) 
    do 
    # Execute osu_bcast with varying number of processes 
    # printf "

 info = $alg, $processes"
    mpirun --map-by core -np $processes \
    $reduce_path \
    -f -i $repetitions -x $warmup -z25,50,75,90,95 \
    | grep -v '^#' | sed '/^\s*$/d' \
    | while IFS= read -r line
    do
        csv_line=$(echo "$line" | tr -s '[:space:]' ',')
        echo "${algorithms[$alg]},$processes,$csv_line" >> "$output_file"
    done

    done 
done

排查步骤

  • 强制生成Slurm日志:在SBATCH参数中添加#SBATCH --output=slurm-%j.out和#SBATCH --error=slurm-%j.err,强制捕获任务运行的日志信息,哪怕快速失败也能定位错误点。
  • 调整MPI启动方式:
    • 替换mpirun为Slurm原生的srun,改为srun -n $processes $reduce_path ...,Slurm环境下srun更适配集群资源调度。
    • 去除或调整--map-by core参数,Thin节点的CPU核心布局可能与FAT节点不同,尝试--map-by node或默认绑定规则。
  • 验证可执行文件路径:登录Thin节点,手动检查$reduce_path指向的文件是否存在、是否有执行权限,确认共享存储在Thin节点上正常挂载。
  • 缩小测试范围:将max_processes改为2,仅测试最小进程数的场景,确认是特定进程数阈值导致失败,还是所有进程数都无法运行。
  • 核对MPI环境一致性:在Thin节点执行module list和mpirun --version,确认加载的OpenMPI版本与FAT节点完全一致,避免版本兼容性问题。
  • 添加调试输出:在脚本关键位置增加调试信息,比如:
    echo "当前节点: $(hostname)"
    echo "测试进程数: $processes"
    echo "osu_reduce路径: $reduce_path"
    echo "输出文件路径: $output_file"
    
    确认脚本执行流程是否符合预期。
  • 查看任务退出状态:用sacct -j <任务ID> --format=JobID,Elapsed,State,ExitCode查询任务退出码,非0退出码可指示错误类型。
  • 验证基础MPI通信:在Thin节点运行简单的MPI HelloWorld程序,确认多节点间MPI通信链路正常,排除网络或集群MPI基础配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 23:12:41