如何创建一个批处理脚本,提交多个作业并将每个作业分配到一个单独的节点上?
How to create a batch script, which submitts several jobs and allocates each of the this jobs on a separate node?
我是 HPC 和 SLURM 的新手,我 运行 遇到了一些麻烦。
我获得了访问 HPC 集群的权限,每个节点上有 32 CPUs。为了进行所需的计算,我制作了 12 Python 个多处理脚本,其中每个脚本正好使用 32 CPU 个。
如何,而不是在交互式模式中手动启动每个脚本(顺便说一句,这也是一个选项。但它需要很多时间)我决定编写一个批处理脚本以自动启动我所有的 12 个脚本。
//脚本//
#!/bin/bash
#SBATCH --job-name=job_name
#SBATCH --partition=分区
#SBATCH --nodes=1
#SBATCH --time=47:59:59
#SBATCH --export=NONE
#SBATCH --array=1-12
模块切换环境env/system-gcc
模块负载 python/3.8.5
来源/home/user/env/bin/activate
python3.8 $HOME/Script_directory/Script$SLURM_ARRAY_TASK_ID.py
退出
//剧本//
但据我了解,此脚本会在同一节点上启动数组中的所有作业,因此底层 python 脚本可能会开始“争夺”可用 CPU's 从而减慢速度。
我应该如何修改我的 bash 文件,以便在单独的节点上从阵列开始每个任务?
提前致谢!
此脚本将启动 12 个独立作业,可能同时在 12 个不同的节点上,或在同一节点上按顺序启动所有 12 个作业,或根据集群负载的任何其他组合。
每个作业都会运行相应的Script$SLURM_ARRAY_TASK_ID.py
脚本。不会有资源竞争。
请注意,如果节点在集群中共享,您将添加 --exclusive
参数以请求具有 32 个 CPU 的整个节点。
我是 HPC 和 SLURM 的新手,我 运行 遇到了一些麻烦。
我获得了访问 HPC 集群的权限,每个节点上有 32 CPUs。为了进行所需的计算,我制作了 12 Python 个多处理脚本,其中每个脚本正好使用 32 CPU 个。 如何,而不是在交互式模式中手动启动每个脚本(顺便说一句,这也是一个选项。但它需要很多时间)我决定编写一个批处理脚本以自动启动我所有的 12 个脚本。
//脚本//
#!/bin/bash
#SBATCH --job-name=job_name
#SBATCH --partition=分区
#SBATCH --nodes=1
#SBATCH --time=47:59:59
#SBATCH --export=NONE
#SBATCH --array=1-12
模块切换环境env/system-gcc 模块负载 python/3.8.5
来源/home/user/env/bin/activate
python3.8 $HOME/Script_directory/Script$SLURM_ARRAY_TASK_ID.py
退出
//剧本//
但据我了解,此脚本会在同一节点上启动数组中的所有作业,因此底层 python 脚本可能会开始“争夺”可用 CPU's 从而减慢速度。
我应该如何修改我的 bash 文件,以便在单独的节点上从阵列开始每个任务?
提前致谢!
此脚本将启动 12 个独立作业,可能同时在 12 个不同的节点上,或在同一节点上按顺序启动所有 12 个作业,或根据集群负载的任何其他组合。
每个作业都会运行相应的Script$SLURM_ARRAY_TASK_ID.py
脚本。不会有资源竞争。
请注意,如果节点在集群中共享,您将添加 --exclusive
参数以请求具有 32 个 CPU 的整个节点。