2012-11-08 8 views
3

1 ~ 4 cpus 만 사용하는 코드를 작성했습니다. 그러나 클러스터에서 작업을 제출하면 작업 당 16 개의 코어가있는 노드를 하나 이상 가져야합니다. 따라서 제출 한 각 작업마다 각 노드에서 여러 시뮬레이션을 실행하고 싶습니다. 하나의 작업에서 시뮬레이션을 병렬로 제출하는 방법이 있는지 궁금합니다.하나의 PBS 작업 제출에서 여러 명령을 실행하는 방법

다음은 예입니다. 내 코드는 4 개의 CPU를 사용합니다. 한 노드에 대한 작업을 제출하고 노드가 모든 코드를 가져 오는 코드 4 개 (각 인스턴스마다 다른 매개 변수가 있음)를 실행하도록합니다.

답변

5

예, 물론입니다. 일반적으로 그러한 시스템에는이를 수행하는 방법에 대한 지침이 있습니다 (like these).

(말) 4x 4-cpu 작업이있는 경우 각각 동일한 시간이 소요되며 4 개의 다른 디렉토리에서 실행되기를 원합니다 (출력 파일을 추적하기가 더 쉬워 짐) 의), 백그라운드에서 그들 각각을 실행하는 쉘 앰퍼샌드를 사용하고 마무리하기 위해 모든 백그라운드 작업 기다립니다

(cd jobdir1; myexecutable argument1 argument2) & 
(cd jobdir2; myexecutable argument1 argument2) & 
(cd jobdir3; myexecutable argument1 argument2) & 
(cd jobdir4; myexecutable argument1 argument2) & 
wait 

(myexecutable argument1 argument2 그러나 당신이 일반적으로 프로그램을 실행 단지 자리 표시 자이고, 당신이 사용하는 경우 mpiexec 또는 그와 비슷한 것으로, 일반적으로 사용하는 것처럼 사용됩니다. OpenMP를 사용하는 경우 위의 첫 번째 줄 앞에 환경 변수 OMP_NUM_THREADS을 내보낼 수 있습니다.

같은 시간이 모두 걸리지 않는 작업이 많은 경우 위의 4 가지 작업보다 더 많은 작업을 할당하고 gnu parallel과 같은 도구를 사용하여 필요한만큼 작업을 시작하는 것이 가장 쉽습니다. this answer에 설명되어 있습니다.

+0

감사합니다. 조사해 보겠습니다. 그러나 시스템에 gnu 병렬이없는 경우 홈 폴더에 설치하여 사용할 수 있습니까? 나는 루트 권한이 없다. – solora

+0

예; 그것을 다운로드하고'./configure --prefix = $ HOME && make && make install'을 실행하십시오. 설치가 매우 간단하며, 시스템 관리자가 시스템 전체에 설치하기 쉽도록 충분히 유용합니다. 구문은 약간 복잡 할 수 있습니다. 여기 좋은 자습서가 있습니다 - http://unethicalblogger.com/2010/11/11/gnu-parallel-changed-my-life.html –