【发布时间】:2020-04-09 22:13:20
【问题描述】:
假设我有 10 个 .R 脚本(或任务),我希望使用 HPC 集群同时运行它们。
HPC 集群使用slurm 作为批处理/排队系统,我知道要运行多个任务,我应该使用命令srun。
但是,我没有任何与 HPC 并行运行多个任务的经验,所以我希望您能帮助我设置一个简单的 job.sh 脚本以通过 slurm 提交给 HPC。
这是一个 job.sh 脚本示例,我使用它来运行 single .R 脚本:
#!/bin/bash
#SBATCH --job-name=test
#SBATCH --partition=part_x
#SBATCH --nodelist=node888
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=01:00:00
#SBATCH --mem-per-cpu=45000
#SBATCH --output=node888.out
#SBATCH --error=node888.err
#SBATCH --mail-type=ALL
#SBATCH --mail-user=email@domain.hpc
Rscript /my/dir/script_1.R
如何设置一个 job.sh 脚本,它可以并行运行我的 10 个 .R 脚本,名为:script_1.R、script_2.R、script_3.R、script_4.R、....、script_10.R ?
感谢您的帮助
【问题讨论】:
-
您可以在后台运行它们(通过在末尾附加
&)或者您可以创建一个包装脚本wrapper.sh并以mpirun开头。在wrapper.sh(取决于进程等级)内,您可以启动不同的脚本。 -
谢谢@Oo.oO 你能举个例子吗?
-
也...如果我在 .R 脚本的末尾附加 & ,它可以工作,但只要一个 .R 脚本结束,整个 job.sh 脚本就会停止,而其他 .R 脚本仍然存在正在运行..
标签: r parallel-processing batch-processing slurm