
本文档旨在指导用户如何在 SLURM 环境下,利用并行计算能力,高效地在多个输入文件上运行同一个 Python 脚本。我们将探讨如何正确配置 SLURM 脚本,利用 srun 命令分配任务,以及如何使用 Job Arrays 简化流程,从而充分利用集群资源,加速数据处理。
当需要在 SLURM 集群上并行运行同一脚本处理多个文件时,srun 命令是关键。与 sem (GNU parallel) 不同,srun 与 SLURM 调度器紧密集成,能更好地利用分配的资源。
以下是一个示例 SLURM 脚本,展示了如何使用 srun 在多个节点上并行执行 Python 脚本:
#!/bin/bash
#SBATCH --nodes=8
#SBATCH --ntasks-per-node=128
INPUT_DIR='path/to/input/dir'
OUTPUT_DIR='/path/to/output/dir'
# 将文件名读入数组
INPUT_STEMS_FILE='/some/path/to/list/of/inputs.txt'
INPUT_STEMS=()
while IFS= read -r line; do
INPUT_STEMS+=("$line")
done < <(tr -d '\r' < INPUT_STEMS_FILE)
for j in `seq 0 $(( ${#INPUT_STEMS[@]} - 1 ))`; do
# 遍历每个文件的索引
# 轮询分配到节点 (0, 1, ..., 8, 0, 1, ...)
NODE_NUMBER=$((j % $SLURM_NNODES))
# 动态生成文件名
INPUT_FILE_NAME="$INPUT_DIR/${INPUT_STEMS[$j]}.txt"
OUTPUT_FILE_NAME="$OUTPUT_DIR/$j.txt"
# 在 1 个节点上运行 1 个任务,使用轮询分配。
# 这样,作业在不同的节点上运行
srun -N1 -n1 -w "$(( $(hostname -s) $NODE_NUMBER ))" python_script.py --input "$INPUT_FILE_NAME" > "$OUTPUT_FILE_NAME" &
done
wait代码解释:
立即学习“Python免费学习笔记(深入)”;
注意事项:
SLURM 的 Job Arrays 提供了一种更简洁的方式来并行执行多个任务。通过 Job Arrays,可以将多个相似的任务作为一个整体提交,SLURM 会自动为每个任务分配资源。
以下是一个使用 Job Arrays 的示例 SLURM 脚本:
#!/bin/bash
#SBATCH --array=0-999
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
INPUT_DIR='path/to/input/dir'
OUTPUT_DIR='/path/to/output/dir'
# 将文件名读入数组
INPUT_STEMS_FILE='/some/path/to/list/of/inputs.txt'
INPUT_STEMS=()
while IFS= read -r line; do
INPUT_STEMS+=("$line")
done < <(tr -d '\r' < INPUT_STEMS_FILE)
TASK_ID=$SLURM_ARRAY_TASK_ID
INPUT_FILE_NAME="$INPUT_DIR/${INPUT_STEMS[$TASK_ID]}.txt"
OUTPUT_FILE_NAME="$OUTPUT_DIR/$TASK_ID.txt"
python_script.py --input "$INPUT_FILE_NAME" > "$OUTPUT_FILE_NAME"代码解释:
立即学习“Python免费学习笔记(深入)”;
使用 Job Arrays 的优点:
注意事项:
本文介绍了两种在 SLURM 环境下并行执行 Python 脚本的方法:使用 srun 命令和使用 Job Arrays。srun 命令提供了更灵活的控制,可以手动分配任务到不同的节点。Job Arrays 则更加简洁,方便管理大量的相似任务。选择哪种方法取决于具体的应用场景和需求。理解 SLURM 的工作原理和正确配置 SLURM 脚本是充分利用集群资源的关键。 记住要根据集群的具体配置和任务需求,调整 SLURM 脚本中的参数,以获得最佳的性能。
以上就是SLURM 并行执行:在多个文件上运行相同的 Python 脚本的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号