【问题标题】:slurm - run multiple R scripts in parallelslurm - 并行运行多个 R 脚本
【发布时间】: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


【解决方案1】:

假设您有多个脚本(script_1script_2script_3)。

你可以做的是:

#!/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

mpirun -np NUMBER_OF_PROCESSES wrapper.sh

然后,在wrapper.sh 中,您可以执行以下操作:

#!/bin/bash

# depending on your installation, you have to get env var that tells you what
# process number it is

PROC_ID=${HERE_GOES_YOUR_SYSTEM_SPECIFIC_VARIABLE_WITH_RANK}

Rscript /my_scripts/script_${PROC_ID}.R

当然,只要你通过指定--ntasks、保留节点的数量等来正确分配资源是有意义的。但是,这可能因目标安装而异。

【讨论】:

    【解决方案2】:

    在后台运行:

    #!/bin/bash
    
    name="script_"
    
    for iter in {1..10}
    do
    
      mkdir $name$iter
      cd $name$iter
      cp ../$name$iter.R .
      nohup sbatch ./$name$iter.R &
      cd ../
    
    done
    

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2023-04-07
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多