如何解决如何创建一个批处理脚本,它提交多个作业并在单独的节点上分配每个作业?
我对 HPC 和 SLURM 尤其陌生,遇到了一些麻烦。
我获得了对每个节点上有 32 个 CPU 的 HPC 集群的访问权限。为了进行所需的计算,我制作了 12 个 Python 多处理脚本,其中每个脚本使用了 32 个 CPU。 如何,而不是在交互模式中手动启动每个脚本(顺便说一句,这也是一个选项。但它需要很多时间),我决定编写一个批处理脚本,以便自动启动我所有的 12 个脚本。
//脚本//
#!/bin/bash
#SBATCH --job-name=job_name
#SBATCH --partition=partition
#SBATCH --nodes=1
#SBATCH --time=47:59:59
#SBATCH --export=NONE
#SBATCH --array=1-12
模块切换 env/system-gcc 模块加载 python/3.8.5
source /home/user/env/bin/activate
python3.8 $HOME/Script_directory/Script$SLURM_ARRAY_TASK_ID.py
退出
//UNSCRIPT//
但据我所知,这个脚本会在同一个节点上启动数组中的所有作业,因此底层的 python 脚本可能会开始“争夺”可用 CPU,从而减慢速度。
我应该如何修改我的 bash 文件以便从单独节点上的阵列启动每个任务?
提前致谢!
解决方法
此脚本将启动 12 个独立的作业,可能同时在 12 个不同的节点上启动,也可能在同一节点上依次启动 12 个或任何其他组合,具体取决于集群的负载。
每个作业都会运行相应的 Script$SLURM_ARRAY_TASK_ID.py
脚本。不会有资源竞争。
请注意,如果节点在集群中共享,您需要添加 --exclusive
参数以请求具有 32 个 CPU 的整个节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。