2013-07-15 3 views
2

Torque/Moab을 사용하여 실행할 R 스크립트가 있습니다. 그러나 벽시계 제한 시간은 스크립트가 완료되는 데 필요한 시간보다 훨씬 짧습니다. 해결해야 할 문제의 본질 때문에 스크립트를 더 이상 병렬 처리 할 수 ​​없습니다.벽시계 제한 시간이 지난 후 자동으로 R 스크립트를 Torque/Moab에 다시 제출하는 방법은 무엇입니까? R Torque

스크립트를 수정하여 특정 간격으로 작업 공간을 백업하고 백업에서 다시 시작하여 계산을 계속합니다.

그러나 필요하다면 벽시계 제한 시간이 지난 후 자동으로 스크립트를 다시 Torque/Moab 스케줄러에 다시 제출하는 솔루션이 필요합니다.

감사합니다.

+0

백업 폴더를 모니터링하는 두 번째 경량 스크립트를 실행할 수 있습니다. 파일이 생성 된 것을 감지하면 백업을로드하고 스크립트를 다시 Torque/Moab 스케줄러에 다시 제출합니다. –

+0

감사합니다. 그러나이 코드의 계산이 선형 적으로 진행되지 않기 때문에 백업 간격을 월 클럭 시간 제한에 매우 가깝게 설정할 수 없습니다. 그렇지 않으면 어떤 경우 백업없이 완료 할 수 있습니다. 사실, 나는 백업 간격을 한계의 0.1 정도로 설정했다. 또한 스크립트에서 서로 비동기 적으로 실행되는 여러 개의 병렬 프로세스가있어 스크립트가 더 복잡해집니다. – imriss

+0

'python'에 대한'ruffus' 패키지를 확인해보십시오. R 세션을 관리하는 데 사용할 수 있습니다. https://code.google.com/p/ruffus/ –

답변

0

walltime @ submit을 늘리기 위해 전원을 켜야합니까? 그래서 당신은 당신의 제출 스크립트에서 이런 일을 할 수 있다면 :

#PBS -l walltime='00:00:00:00" #(DD:HH:min:SS)

그렇지 않으면 당신이 확인하는 작은 클라이언트를 작성해야합니다 어디 Manetheran에 동의보다.

+0

. 그러나 벽 시간 제한은 내 경우에는 48 시간입니다. – imriss

0

표준 작업은 제출하는 runscript를 만드는 것입니다. 이를 체인이라고합니다. 베어 본 bash는 예를 들어, 다음 스크립트가 /path/to/script.sh했다 가정하고 JOB_ID가 특정 토크 설정을 참조하는 변수를 나타냅니다 (아마도 PBS_JOBID?)

#!/bin/bash 
#MSUB OPTIONS... 

#(
#sleep 60 #for example 
msub -l depend=${JOB_ID} /path/to/script.sh > /path/to/next_job.msub 
#)& 

[do hard work here: run your r script, etc.] 

canceljob $(cat /path/to/next_job.msub) 

여기서 핵심은을 제출 next_job 라인이다 종속성에 따라 현재 작업이 완료 될 때만 (죽거나 정상적으로 완료 되더라도) 새로운 작업이 실행됩니다. "근면"단계가 끝나면 후속 작업을 취소합니다. 그러나 "힘든 일"단계가 벽 시계 시간 (또는 다른 이유로)으로 중단되면 canceljob 명령에 도달하지 못하고 결국 제출 된 작업이 실행됩니다.

보통 괄호 안에 제출물을 감싸고 잠을 자고 & (즉, 4, 5 및 7 번째 줄의 주석 처리를 제거합니다)을 사용하여 해당 프로세스를 기본 스크립트에서 분리합니다. 이렇게하면 "힘든 일"에 문제가 생기고 1 분 이내에 실패하면 프로세스가 종료되고 매우 짧고 실패한 작업이 무한대로 연결되지 않습니다.