2017-04-26 11 views
1

내 질문은 this one과 비슷하지만 다른 점은 숫자가 아니라 문자열이라는 점입니다.동일한 스크립트이지만 다른 입력 문자열 인수가 병렬로 실행되는 SLURM sbatch 작업 배열

두 개의 문자열을 인수로 취하는 스크립트 (myscript.R)가있는 경우 : "text-a", "text-A".

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

지금 내가 실행하고 싶은 몇 가지 다른 입력 문자열이 : sbatch에 대한 나의 쉘 스크립트는 것

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" 

그러나 동일한 쉘 스크립트에 입력하면 순차적으로 실행됩니다. 인수가 인덱스 인 경우에만 #SBATCH -a 0-10을 사용할 수 있다는 것을 알고 있습니다. 동시에 4 개의 스크립트를 제출하고 정확히 동일한 설정 (특히 각각 -c 12을 할당해야 함)을 가진 각 스크립트를 제출하려면 어떻게해야합니까?

감사합니다.

답변

0

인수 값 목록을 배열에 저장하고 SLURM_ARRAY_TASK_ID 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으로 제출하십시오.