【问题标题】:SLURM sbatch job array for the same script but with different input string arguments run in parallel用于相同脚本但具有不同输入字符串参数的 SLURM sbatch 作业数组并行运行
【发布时间】:2017-04-26 18:34:31
【问题描述】:

我的问题和this one类似,不同的是我不同的论点不是数字而是字符串。

如果我有一个脚本 (myscript.R),它接受两个字符串作为参数:“text-a”、“text-A”。我的 sbatch 的 shell 脚本是:

#!/bin/bash

#SBATCH -n 1
#SBATCH -c 12
#SBATCH -t 120:00:00
#SBATCH --partition=main
#SBATCH --export=ALL

srun ./myscript.R "text-a" "text-A"

现在我想运行几个不同的输入字符串:

first <- c("text-a","text-b","text-c","text-d")
second <- c("text-A","text-B","text-C","text-D")

我想运行带有文本组合的 myscript.R,例如:

srun ./myscript.R "text-a" "text-A"
srun ./myscript.R "text-b" "text-B"
srun ./myscript.R "text-c" "text-C"
srun ./myscript.R "text-d" "text-D"

但如果我将它们放在同一个 shell 脚本中,它们将按顺序运行。我只知道当参数是索引时我可以使用#SBATCH -a 0-10。如果我想同时提交四个脚本,并且每个脚本都具有完全相同的设置(尤其是每个都需要分配-c 12),我该怎么做?

谢谢!

【问题讨论】:

    标签: arrays slurm sbatch


    【解决方案1】:

    您可以将参数值列表存储在数组中,并使用 SLURM_ARRAY_TASK_ID 环境变量来索引该数组。

    #!/bin/bash
    
    #SBATCH -n 1
    #SBATCH -c 12
    #SBATCH -t 120:00:00
    #SBATCH --partition=main
    #SBATCH --export=ALL
    #SBATCH --array=0-3
    
    A=(text-{a..d}) # This is equivalent to A=(text-a text-b ... text-d)
    B=(text-{A..D})
    
    srun ./myscript.R "${A[$SLURM_ARRAY_TASK_ID]}" "${B[$SLURM_ARRAY_TASK_ID]}"
    

    只需使用sbatch 提交即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      相关资源
      最近更新 更多