2017-12-01 5 views
0

루프 내에서 qsub을 호출하여 셸 스크립트를 사용하여 컴퓨팅 클러스터에서 여러 작업을 시작합니다. 루프를 사용하여 각 작업의 시작 값을 다르게 지정합니다. 커맨드 라인에서 쉘 스크립트를 실행할 때 숫자를 쉘 스크립트에 넘기는 것만으로 요청할 각 작업의 코어 수를 지정하고 싶었습니다. 예를 들어가변 리소스 요청을 사용하는 PBS 지시문

./lauchJobs.sh 8 

은 노드 당 8 개의 코어를 요청하는 작업을 시작합니다. 나는 (내가 세 개의 인수를 기대하기 때문에 ./launchJobs.sh 8 1 50 같은 네, 기술적으로 내 첫 번째 예는 있었어야 일)

#!/bin/tcsh 
#check that all input arguments are there 
if ($# != 3) then 
    echo "This script requires three input arguments: (i) number of cores per job, (ii) starting guessNum, (iii) ending guessNum" 
else 
    foreach iNum (`seq $2 1 $3`) #loop over guess numbers 
     qsub -v iGuess=${iNum} estimate.pbs 
    end 
endif 

를 이렇게 시도 그리고 estimate.pbs는

#!/bin/tcsh 
#PBS -l pmem=1gb,nodes=1:ppn=${nCores},walltime=60:00:00 

로 시작 문제는 ${nCores}이 PBS 지시어 안에 있기 때문에 쉘 스크립트에서 전달한 값으로 해석되지 않는다는 것입니다.

./lauchJobs.sh 8처럼 스크립트에 전달하여 요청할 코어 수를 지정할 수있는 스크립트 파일과 PBS 파일을 작성할 수 있습니까?

+0

'HERE' 문서는 당신을 도울 수 있습니다. ('[tcsh] HERE'을 검색하거나 ('EOF' 나'EOS'로 바뀌는 결과가 없다면) PBS 지시어 파일의 맨 위에있는 "tcsh"하지만 PBS가 무엇인지는 알지 못합니다. 지금 잠자리에 들었으므로 지금은 시간을 할애 할 수 없습니다. 내일은 어쩌면 바쁠 것입니다. 행운을 빈다. – shellter

답변

2

nodes=1:ppn=${nCores}을 estimate.pbs로 지정할 필요가 없습니다.

또한이 방법으로 qsub를 호출 할 수 있습니다

qsub -l nodes=1:ppn=${1} -v iGuess=${iNum} estimate.pbs