SLURM srun
과 sbatch
명령 의 차이점을 이해하려고 합니다. 다음 질문에 대한 구체적인 답변보다는 일반적인 설명에 만족할 것입니다. 그러나 여기에 시작점이 될 수있는 몇 가지 구체적인 혼란 지점이 있으며 제가 찾고있는 내용에 대한 아이디어를 제공 할 수 있습니다.
문서 에 따르면 , srun
작업 제출을위한 것이고 sbatch
나중에 실행하기 위해 작업을 제출하기위한 것이지만 실질적인 차이점은 나에게 분명하지 않으며 그들의 행동은 동일하게 보입니다. 예를 들어, 각각 2 개의 CPU가있는 2 개의 노드가있는 클러스터가 있습니다. srun testjob.sh &
5x를 연속으로 실행 하면 CPU가 사용 가능해질 때까지 다섯 번째 작업을 멋지게 큐에 넣을 것 sbatch testjob.sh
입니다.
질문을 좀 더 구체적으로 설명하기 위해 시작하기 좋은 곳 은 다음과 같습니다. 하나로 할 수있는 일 중 다른 하나로는 할 수없는 것은 무엇이며 그 이유는 무엇입니까?
두 명령에 대한 많은 인수가 동일합니다. 가장 관련성을 보이는 사람은 --ntasks
, --nodes
, --cpus-per-task
, --ntasks-per-node
. 이것들은 서로 어떻게 관련되어 있으며 srun
vs sbatch
?
한 가지 특별한 차이점은 실행 권한이 없으면 srun
오류가 발생하는 반면 행복하게 실행된다는 것입니다. "내부에서"무슨 일이 일어나고 있는가?testjob.sh
chmod +x testjob.sh
sbatch
설명서에는 스크립트 srun
내부에서 일반적으로 사용되는 내용 도 언급되어 sbatch
있습니다. 이것은 다음과 같은 질문으로 이어집니다. 서로 어떻게 상호 작용하며 각각에 대한 "표준"사용 사례는 무엇입니까? 구체적으로, 내가 단독으로 사용할 srun
수 있습니까?
srun
제출 스크립트 내부 를 호출 해야합니까? 아마도 나는 "작업 단계"의 의미에 대해 혼란 스러울 것입니다. 예를 들어runjob.sh
를 포함 하는 스크립트가있는 경우#!/bin/bash srun myjob.sh
(a)sbatch runjob.sh
vs (b)sbatch myjob.sh
vs (c)srun myjob.sh
vs (d) 호출간에 실질적인 차이가srun runjob.sh
있습니까? (분명히 마지막 것은 어리석지 만 궁금합니다).