로그인된 클러스터 노드에서 slurm 작업을 실행할 수 있습니까? 노드에 로그인했다고 가정합니다.
casade01
casade02
casade03
이렇게 하면 줄을 설 필요가 없어요. 중요한 경우 특정 노드(예: )로 SSH를 통해 연결할 수 있습니다 ssh user@casacde01
. 그런 다음 "헤드" 노드로 지정한 노드에 로그인하고 "좋아, 이 코드를 casacde02 및 casacde03에서 실행하시겠습니까?"라고 말할 수 있습니다.
내가 찾고 있어요이 스택 교환 게시물-w
sbatch 플래그를 제공합니다 . 하지만 sbatch나 다른 것이 필요합니까?
단일 노드에 로그인하여 무언가를 실행하면 해당 노드에서만 실행되므로 slurm을 호출하여 현재 로그인된 모든 노드에서 실행되도록 병렬 프로그램을 예약해야 합니다.
답변1
당신이 무엇을 하고 싶은지 완전히 확신할 수는 없지만, 몇 가지 가정을 하고 답을 찾아보도록 하겠습니다. "코드 디버깅 및/또는 대화형 실행"에 대한 귀하의 의견을 귀하가 하려는 일의 기초로 삼겠습니다(질문에 추가할 수도 있음).
작업의 초기 할당을 위해 대기열에서 대기하고 작업이 시작된 후 대화형으로 디버깅할 수 있는 경우 SLURM 명령을 사용하여 이를 수행할 수 있습니다.
예를 들어, 코드를 디버그하는 데 3개의 노드가 필요한 경우 slurm 명령을 사용할 수 있습니다. 이 명령 salloc -N 3
은 (구성에 따라) 해당 노드 중 하나에 3개의 노드를 할당할 수도 있습니다(역시 slurm 구성에 따라). , 그런 다음 srun을 사용하여 병렬 코드를 실행할 수 있습니다. 디버깅이 완료될 때까지(또는 시간이 다 될 때까지) srun 명령을 계속 실행할 수 있습니다.
이제 세 개의 특정 노드가 필요하다고 가정하면 동일한 salloc 명령을 사용하되 --nodelist=casade01,casade02,casade03
명령에 추가할 수 있습니다.
그러나 이미 이 세 개의 노드에 로그인되어 있고(예: slurm 내에서가 아닌 ssh를 사용하여) 이 세 개의 로그인 세션을 독점적으로 사용하여 명령을 실행하려는 경우 다른 작업 slurm을 방해할 수 있다는 점에 유의해야 합니다. 이것들을 정리하고 있습니다. 일반적으로 slurm 구성은 slurm 명령을 사용하지 않고 컴퓨팅 노드에 직접 로그인할 수 없도록 설정되어 있지만 설정에서는 그렇지 않은 것 같습니다. slurm srun 명령은 (설정에 따라) 일부 유형의 MPI를 사용하여 병렬 코드를 실행할 수 있습니다. mpi 명령을 직접 사용하여 코드를 실행할 수 있습니다. 코드 실행을 위한 MPI 명령(예: mpiexec)에 익숙하지 않은 경우 특히 salloc 메서드가 작동하는 경우 이 접근 방식을 사용하지 않을 것입니다.