2017-04-26 99 views
1

我的問題與this one類似,區別在於我的不同參數不是數字而是字符串。SLURM sbatch作業數組爲同一個腳本,但不同的輸入字符串參數並行運行

如果我有一個以兩個字符串作爲參數的腳本(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),那麼我該怎麼做?

謝謝!

回答

0

您可以將參數值列表存儲在數組中,並使用env變量來索引該數組。

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

相關問題