2015-01-28 1 views
1

SLURM 스케줄러를 사용하여 클러스터 작업을 했었지만 이제는 SGE 기반 클러스터로 전환해야합니다. 그것의 걸림 새를 얻으십시오. 내가 SLURM 시스템에 일하는 것은 다른 노드의 다른 입력 파일을 사용하여 실행 파일을 실행하기위한 SGE 설정

slurmConf.conf SLURM configuration file 
    0 /path/to/exec /path/to/input1 
    1 /path/to/exec /path/to/input2 
    2 /path/to/exec /path/to/input3 
    3 /path/to/exec /path/to/input4 
    4 /path/to/exec /path/to/input5 
    5 /path/to/exec /path/to/input6 
    6 /path/to/exec /path/to/input7 
    7 /path/to/exec /path/to/input8 
    8 /path/to/exec /path/to/input9 
    9 /path/to/exec /path/to/input10 

그리고 SLURM 내 작업 제출 스크립트는이 라인을 포함, N 입력 파일을 사용하여 실행 파일을 실행하고,이 방식에 SLURM 구성 파일을 설정 포함;

srun -n $SLURM_NNODES --multi-prog $slconf 
$slconf refers to a path to that configuration file 

이 설정은 10 개의 노드를 사용하여 동시에 10 개의 다른 입력으로 실행 파일을 실행하려는 경우에 효과적이었습니다. 이제 방금 SGE 시스템으로 전환 했으므로 동일한 작업을 수행하려고하지만 매뉴얼을 읽으려고 시도했지만 SLURM과 비슷한 것을 찾지 못했습니다. SGE 시스템에서 동일한 것을 달성하는 방법에 대해 나에게 약간의 빛을 주시겠습니까?

대단히 감사합니다!

+0

, 그것을 받아들이는 고려하시기 바랍니다. – Vince

답변

1

Grid Engine의 "작업 배열"기능을 사용할 수 있습니다.

쉘 스크립트 sge_job.sh

#!/bin/sh 
# 
# sge_job.sh -- SGE job description script 
# 
#$ -t 1-10 
/path/to/exec /path/to/input$SGE_TASK_ID 

을 만들고 qsub에 SGE이 스크립트를 제출합니다.

qsub sge_job.sh 
+0

와우, 이것은 SLURM의 접근 방식보다 훨씬 깨끗해 보입니다! 나는 이것을 시도하고 시도 할 것이다! 고마워요! – KhunWasut

+0

안녕하세요 드미트리. 귀하의 방법은 실제로 예상대로 작동하지 않습니다. 이것은 순차적으로 작업을 순차적으로 실행하는 것으로 보이며 10 개의 작업을 실행하는 총 시간은 정확하게 1 개의 작업을 10 번 실행하는 총 시간이지만 SLURM 방식은 속도가 빨라졌습니다. 이 10 개의 작업을 서로 병렬로 실행할 수있는 SGE에 대한 방법이 있습니까? 감사. – KhunWasut

+0

@KhunWasut 흥미롭게도, 동시에 실행할 수있는 작업 (배열 작업) 수에 제한이 설정되어있을 수 있습니다. –

0

드미트리 Chubarov의 대답은 우수하고, 많은 일자리를 (> 1000) 제출시는 제출 노드에 적은 부하를 배치로 가장 강력한 방법은 계속합니다. 또는, for 루프에서 qsub을 포장 할 수 있습니다 입력이 쉽게 정수의 범위로 포착되지 않는 변화 어떤 경우

for i in {1..10} 
do 
    echo "/path/to/exec /path/to/input${i}" | qsub 
done 

은 가끔 위를 사용합니다.

예 : 내 또는 드미트리의 대답은 유용 경우

for f in `ls /some/path/input*` 
do 
    echo "/path/to/exec ${f}" | qsub 
done 
+0

Grid Engine에서 처음 시도한 것은 그리 크지 않았습니다. 스케줄러가 노드 당 동일한 프로세서 수를 할당하고 단일 qsub 스크립트에서 다음과 같은 for 루프를 할당한다고 가정했기 때문입니다 . '읽기 라인 이 라인 SSH 호스트 이름/경로에서 추출 호스트 이름을하면서 /에/간부/경로 /로/입력 완료 <$ PE_HOSTFILE' 그러나 스케줄러가 할당 할 수 있기 때문에 이것은 항상하지만 작동하지 않습니다 각 노드에 대해 서로 다른 프로세서 수. 나는 이것을 대안으로 시도 할 것이다. 고맙습니다! – KhunWasut

+0

일반적으로 SGE는 클러스터의로드 밸런싱을 기반으로 노드를 선택합니다. 그러나'-l h = '옵션을 사용해야하는 경우 특정 노드를 선택할 수 있습니다. 예약 된 프로세서 수는 대기열 구성 및 qsub에 대한 매개 변수 (병렬 환경 (PE)가 활성화 된 경우 -pe <프로세서 필요>)에 의해 결정됩니다. PE가 없으면 작업은 "예약 된"하나의 프로세서이지만 프로그램이 허용하는 것보다 많이 사용하는 경우 SGE는이를 인식하지 못하므로 시스템이 과부하 상태가 될 수 있습니다. – Vince

관련 문제