SLURM`srun` vs`sbatch` 및 매개 변수


101

SLURM srunsbatch명령 의 차이점을 이해하려고 합니다. 다음 질문에 대한 구체적인 답변보다는 일반적인 설명에 만족할 것입니다. 그러나 여기에 시작점이 될 수있는 몇 가지 구체적인 혼란 지점이 있으며 제가 찾고있는 내용에 대한 아이디어를 제공 할 수 있습니다.

문서 에 따르면 , srun작업 제출을위한 것이고 sbatch나중에 실행하기 위해 작업을 제출하기위한 것이지만 실질적인 차이점은 나에게 분명하지 않으며 그들의 행동은 동일하게 보입니다. 예를 들어, 각각 2 개의 CPU가있는 2 개의 노드가있는 클러스터가 있습니다. srun testjob.sh &5x를 연속으로 실행 하면 CPU가 사용 가능해질 때까지 다섯 번째 작업을 멋지게 큐에 넣을 것 sbatch testjob.sh입니다.

질문을 좀 더 구체적으로 설명하기 위해 시작하기 좋은 곳 은 다음과 같습니다. 하나로 할 수있는 일 중 다른 하나로는 할 수없는 것은 무엇이며 그 이유는 무엇입니까?

두 명령에 대한 많은 인수가 동일합니다. 가장 관련성을 보이는 사람은 --ntasks, --nodes, --cpus-per-task, --ntasks-per-node. 이것들은 서로 어떻게 관련되어 있으며 srunvs sbatch?

한 가지 특별한 차이점은 실행 권한이 없으면 srun오류가 발생하는 반면 행복하게 실행된다는 것입니다. "내부에서"무슨 일이 일어나고 있는가?testjob.shchmod +x testjob.shsbatch

설명서에는 스크립트 srun내부에서 일반적으로 사용되는 내용 도 언급되어 sbatch있습니다. 이것은 다음과 같은 질문으로 이어집니다. 서로 어떻게 상호 작용하며 각각에 대한 "표준"사용 사례는 무엇입니까? 구체적으로, 내가 단독으로 사용할 srun수 있습니까?

답변:


117

문서에 따르면

srun is used to submit a job for execution in real time

동안

sbatch is used to submit a job script for later execution.

둘 다 거의 동일한 매개 변수 세트를 허용합니다. 가장 큰 차이점은 srun대화 형 및 차단 (터미널에서 결과를 얻고 완료 될 때까지 다른 명령을 작성할 수 없음) sbatch이며 배치 처리 및 비 차단 (결과는 파일에 기록되고 다른 명령을 제출할 수 있음)입니다. 곧).

기호 srun와 함께 백그라운드에서 사용하는 경우 대화 형이지만 차단되지 않는 &의 '차단'기능을 제거합니다 srun. 그래도 여전히 대화 형이므로 출력이 터미널을 복잡하게 만들고 srun프로세스가 터미널에 연결됩니다. 연결을 끊으면 제어권을 잃거나 죽을 수 있습니다 ( stdout기본적으로 사용하는지 여부에 따라 다름 ). 그리고 작업을 제출하기 위해 연결 한 시스템이 재부팅되면 종료됩니다.

를 사용하는 경우 sbatch작업을 제출하고 Slurm에서 처리합니다. 결과없이 연결을 끊거나 터미널을 종료 할 수 있습니다. 작업이 더 이상 실행중인 프로세스에 연결되어 있지 않습니다.

하나는 할 수 있지만 다른 하나로는 할 수없는 것은 무엇이며, 그 이유는 무엇입니까?

사용할 수 sbatch있고 사용할 수 없는 기능 srun작업 지연 입니다. 스크립트 srun내에서 사용할 수있는 것처럼으로 할 sbatch수없는 작업은 없습니다 sbatch.

이들은 서로 어떻게 관련되어 있으며 srun과 sbatch의 차이점은 무엇입니까?

모든 매개 변수는 --ntasks, --nodes, --cpus-per-task, --ntasks-per-node두 명령에서 동일한 의미를 갖는다. 주목할만한 예외를 제외하고 거의 모든 매개 변수에 해당됩니다 --exclusive.

"내부에서"무슨 일이 일어나고 있는가?

srun즉시 원격 호스트에서 스크립트를 실행하고 sbatch내부 저장소에 스크립트 를 복사 한 다음 작업이 시작될 때 컴퓨팅 노드에 업로드합니다. 제출 스크립트를 제출 한 후 수정하여이를 확인할 수 있습니다. 변경 (참조 고려되지 않습니다 ).

서로 어떻게 상호 작용하며 각각에 대한 "표준"사용 사례는 무엇입니까?

일반적으로 sbatch작업을 제출하는 데 사용 srun하고 제출 스크립트에서 Slurm이 호출하는대로 작업 단계를 생성합니다. srun프로세스를 시작하는 데 사용됩니다. 프로그램이 병렬 MPI 프로그램 인 경우 srun모든 MPI 프로세스 생성을 처리합니다. 그렇지 않은 경우 옵션에 srun지정된 횟수만큼 프로그램을 실행합니다 --ntasks. 프로그램은 병렬 여부, 긴 실행 시간을 갖거나 별도의 규정이없는 등, 하나의 실행 여부로 구성되어 여부에 따라 많은 사용 사례가 있습니다 srun기본적으로 상속은의 관련 옵션 sbatch또는 salloc그것을 실행 아래 ( 여기에서 ).

특히 srun을 단독으로 사용할 수 있습니까?

작은 테스트를 제외하고는 그렇지 않습니다. 일반적인 용도는 srun --pty bash컴퓨팅 작업에서 셸을 얻는 것입니다.


6
답 해주셔서 감사합니다. 이것이 제가 기대했던 것보다 낫습니다. 이것이 내 원래 혼란 스러웠던 점 중 하나 였기 때문에 후속 조치 : 왜 srun제출 스크립트 내부 를 호출 해야합니까? 아마도 나는 "작업 단계"의 의미에 대해 혼란 스러울 것입니다. 예를 들어 runjob.sh를 포함 하는 스크립트가있는 경우 #!/bin/bash srun myjob.sh(a) sbatch runjob.shvs (b) sbatch myjob.shvs (c) srun myjob.shvs (d) 호출간에 실질적인 차이가 srun runjob.sh있습니까? (분명히 마지막 것은 어리석지 만 궁금합니다).
dkv

3
제출 스크립트 내에서 srun이 어떻게 사용되는지에 대한 아이디어를 얻기 위해 최근에 제공 한 교육 세션의 슬라이드를 찾아 볼 수 있습니다. cism.ucl.ac.be/Services/Formations/slurm/2016/slurm.pdf
damienfrancois

5
슬라이드의 모든 예제 (CECI 페이지의 자습서 포함) srunsbatch제출 스크립트 내부에서 사용되는 것처럼 보입니다 . 그러나 srun제출 스크립트에 없는 명령 이 동일한 방식으로 실행 된다는 것을 발견했습니다 . 위에서 언급 한 네 가지 호출간에 실제로 차이점이 있습니까?
dkv

9
모든 예제는 (1) 할당이 하나의 CPU에 대한 것이고 (2) 프로그램이 순전히 순차적 인 경우에만 동일한 방식으로 실행됩니다. 차이점을 확인하려면 작업을 두 개 이상 요청하세요. 또 다른 차이점은 sbatch에서의 srun를 사용하지 않는 경우 sstat 명령 유용한 정보를 반환하지 것입니다
damienfrancois

1
이상을 최신 상태이 버전의 힘을 @Atcold : github.com/damienfrancois/slurm-helper/blob/master/slurm.vim
damienfrancois

6

이것은 실제로 질문에 대한 완전한 답은 아니지만 앞으로 누군가에게 도움이 될만한 정보가 더 있습니다.


A로부터 관련 스레드 내가 발견 비슷한 질문 :

간단히 말해서 sbatch 및 salloc은 작업에 리소스를 할당하는 반면 srun은 해당 리소스에 대해 병렬 작업을 시작합니다. 작업 할당 내에서 호출되면 srun은 할당 된 리소스의 일부 또는 전체에서 병렬 작업을 시작합니다. 이 경우 srun은 기본적으로 실행되는 sbatch 또는 salloc의 관련 옵션을 상속합니다. 그런 다음 (일반적으로) 기본적으로 수신하는 것을 재정의하는 다른 옵션을 제공 할 수 있습니다. 작업 내에서 각 srun 호출을 작업 단계라고합니다.

srun은 작업 할당 외부에서 호출 할 수도 있습니다. 이 경우 srun은 리소스를 요청하고 해당 리소스가 부여되면 해당 리소스에서 작업을 단일 작업 및 작업 단계로 시작합니다.

-B 및-독점 옵션에 대해 자세히 설명하는 비교적 새로운 웹 페이지가 있습니다.

doc / html / cpu_management.shtml


SLURM FAQ 페이지 의 추가 정보 .

srun 명령에는 두 가지 작동 모드가 있습니다. 첫째, 기존 작업 내에서 실행되지 않는 경우 (즉, salloc 또는 sbatch에 의해 생성 된 Slurm 작업 할당 내에서 실행되지 않음), 작업 할당을 생성하고 응용 프로그램을 생성합니다. 기존 할당 내에서 실행되는 경우 srun 명령은 응용 프로그램 만 생성합니다. 이 질문에 대해서는 첫 번째 작업 모드 만 다루고 sbatch 및 srun 명령을 사용하여 작업 할당 생성을 비교합니다.

srun 명령은 누군가가 출력을 모니터링하는 대화식 사용을 위해 설계되었습니다. 응용 프로그램의 출력은 일반적으로 사용자의 터미널에서 srun 명령의 출력으로 표시됩니다. sbatch 명령은 나중에 실행하기 위해 스크립트를 제출하도록 설계되었으며 그 출력은 파일에 기록됩니다. 작업 할당에 사용되는 명령 옵션은 거의 동일합니다. 옵션에서 가장 눈에 띄는 차이점은 sbatch 명령은 작업 배열 개념을 지원하지만 srun은 지원하지 않는다는 것입니다. 또 다른 중요한 차이점은 내결함성입니다. sbatch 작업과 관련된 실패는 일반적으로 작업이 다시 대기열에 추가되고 다시 실행되는 반면, srun과 관련된 실패는 일반적으로 사용자가 적절한 방식으로 응답 할 것이라는 예상과 함께 오류 메시지가 생성됩니다.


여기에 또 다른 관련 대화

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.