2017-03-23 15 views
0

LSF 작업 배열을 실행하여 메이크 파일에서 대상을 만듭니다. 그러나 배열을 제출하자마자 make는 대상에 대한 명령이 실행 된 것으로 간주하고 대상이 존재하지 않으므로 오류를 발생시킵니다.Make 파일의 LSF 작업 배열

다른 종속 대상으로 이동하기 전에 LSF 작업 배열이 완료 될 때까지 대기하게하려면 어떻게해야합니까?

예 :

all: final.txt 

first_%.txt: 
    bsub -J" "jarray[1-100]" < script.sh 

final.txt: first_%.txt 
    cat first_1.txt first_50.txt first_100.txt > final.txt 

는 불행하게도 -K 플래그가 작업 배열이 지원되지 않습니다.

+0

메이크 파일이 필요합니까? 잠재적으로 작업에서'cat ...> final.txt'처럼 작업 종속성을 사용할 수 있습니다. 아니면 makefile을 유지하고 마지막 작업을 위해'bsub -K'를 사용할 수도 있습니다. 그렇게하면 final.txt에 대한 규칙은 완료 될 때까지 여전히 차단됩니다. –

답변

1

시도해보십시오. 작업이 완료 될 때까지 bsub를 강제로 포 그라운드로 유지해야합니다.

편집

옵션이 배열에서 지원되지 않기 때문에, 나는 당신이 별도의 작업, 일 등의 배열을 제출해야합니다 생각 :

for i in `seq 1 100`; do 
      export INDEX=$i 
      bsub -K < script.sh & 
done 
wait 
당신은해야합니다

작업 배열 인덱스를 사용하는 대신 스크립트에 수동으로 인덱스를 전달하십시오.

+0

bsub -K는 작업 배열에서 작동하지 않습니다. "작업 배열은 -K 옵션을 지원하지 않습니다. 작업이 제출되지 않았습니다." – par

+0

아하, 그 경우에는 내가 추가 할 다른 솔루션을별로 좋아하지 않을 것이다.하지만 생각할 수있는 전부다. – Squirrel

0

작업 완료를 기다리는 명령을 bsub에게 요청해야합니다. 나는 그것을 사용한 적이 없지만 the man page에 따르면 -K 옵션을 추가 할 수 있습니다.

+0

bsub -K는 작업 배열에서 작동하지 않습니다. "작업 배열은 -K 옵션을 지원하지 않습니다. 작업이 제출되지 않았습니다." – par

+0

너무 나빠요. 모든 것이 완료 될 때까지 조리법을 기다리는 방법을 찾아야합니다. 여기서 make가 할 수있는 것은 없습니다 : 여러분은 여러분의 제조법이나 뭔가에서 스크립팅을 통해이를 해결할 필요가 있습니다. – MadScientist