2017-12-13 35 views
0

처음으로 SLURM 스크립트를 사용하여 처음으로 계산에 클러스터를 사용하고 있습니다.SLURM 스크립트의 while 루프

저는 숫자 목록을 통해 사용하고있는 파이썬 코드를 반복하고 있습니다. 전에 bash 스크립트에서 간단한 while 루프를 사용하여 내 컴퓨터에서이 작업을 수행했습니다.

나는 이것이 SLURM 스크립트로 직접 변환 될 것이라고 생각했다. 그러나 실행시 목록의 첫 번째 번호 만 읽고 실행 한 후 실행을 중지합니다. 나머지 ~ 200 숫자는 무시됩니다. 어떤 아이디어가 이것을 유발할 수 있습니까? 여기

참조를 들어, SLURM 스크립트입니다 : "model_ $ IDX는"존재하지 않는

#!/bin/bash -l 

#SBATCH -o ./job.out.%j 
#SBATCH -e ./job.err.%j 
#SBATCH -D ./ 
#SBATCH -J NAME 
#SBATCH --nodes=2 
#SBATCH --tasks-per-node=40 
#SBATCH --cpus-per-task=1 
#SBATCH --time=06:59:00 

module load anaconda 

while read IDX; do 
    echo $PWD 
    cd "model_"$IDX 
    srun python ../mcmc.py 
    cd ".." 
done <sample.txt 
+0

echo $ PWD, model _ "$ IDX'로만 실행하려고 했습니까? 어쩌면 작동하지만'mcmc.py'에 문제가 있거나 폴더가 올바르지 않습니다. – furas

+0

예 시도해 보았는데 예상대로 실행되었으므로 루프 자체가 올바르게 작동합니다. mcmc.py가 나에게 오류를주지 않는다. (그리고 나는 보통의 기계에서 충분히 실행했다.) 클러스터에 반복적 인 srun이 생겨서 문제가 생길 수 있니? !! 감사합니다. – user1991

+0

나는 결코 SLURM을 사용하지 않았다. 어쩌면'print()'만으로 간단한 스크립트로 시도해 볼 수 있을까? 스크립트는 다른 권한으로 실행될 수 있으며 폴더에 대한 액세스 권한이 없거나 시스템이 오류 코드로 처리하는 값을 반환 할 수 있습니다 (파이썬 명령'exit (value)'에서). 또는 스크립트가 파일/로그에 정보를 저장하여 올바르게 작동하는지 확인할 수 있어야합니다. – furas

답변

0

경우 다음 cd .. 다음 반복을 중단합니다.

그에 대한 간단한 수정 IDX가 양수라면

while read IDX; do 
    echo $PWD 
    if cd "model_"$IDX; then 
     srun python ../mcmc.py 
     cd ".." 
    fi 
done <sample.txt 

하고 실행 사이의 종속성이없는, 더 SLURM'ish 방법은 한 시스템의 한계가 허용하는 (Job Array를 사용하는 것입니다 당신은 당신의 작업 스크립트가

#!/bin/bash -l 

#SBATCH -o ./job.out.%j 
#SBATCH -e ./job.err.%j 
#SBATCH -D ./ 
#SBATCH -J NAME 
#SBATCH --nodes=2 
#SBATCH --tasks-per-node=40 
#SBATCH --cpus-per-task=1 
#SBATCH --time=06:59:00 

module load anaconda 

echo $PWD 
cd "model_"$SLURM_ARRAY_TASK_ID 
srun python ../mcmc.py 

은 다음 실외을 사용하는 것

당신의 필요를 위해 충분히 크다 작업 배열을) 제출 l sample.txt를 구문 분석하고 쉼표로 분리 된 인덱스 문자열을 생성하고

sbatch --array=<comma separated list of indexes> <slurm script>