2016-06-10 5 views
1

여러 mpi 응용 프로그램을 실행하기 위해 slurm 배치 (sbatch)를 작성하고 싶습니다. 따라서 그slurm이있는 mpirun : 단일 CPU에서 여러 프로세스를 실행하는 방법

salloc --nodes=1 mpirun -n 6 hostname 

같은 것을 실행할 수 있도록하고 싶습니다 그러나 나는이 메시지 :

에 의해 요청 된 6 개 슬롯을 만족하는 시스템에서 사용 가능한 슬롯이 충분하지 않습니다 응용 프로그램 : 호스트 이름

응용 프로그램에 필요한 슬롯 수를 줄이거 나 사용 가능한 슬롯을 늘리십시오.

노드에는 실제로 4 개의 CPU가 있습니다. 따라서 CPU 당 더 많은 작업을 허용하는 무언가를 찾고 있지만 적절한 옵션을 찾을 수 없습니다. 물리적 인 자원이 없으면 mpi만으로 여러 프로세스를 실행할 수 있다는 것을 알고 있습니다. 나는 문제가 슬럼가쪽에 있다고 생각한다. 의견이나 제안이 있으십니까?

답변

1

srun을 사용하고 --overcommit을 제공하십시오. 그런 :

test.job :

#!/bin/bash 
#SBATCH --nodes=1 
#SBATCH --ntasks=6 
#SBATCH --overcommit 

srun hostname 

실행 man srun에서 sbatch test.job

:

일반적으로, SRUN는 CPU 당 하나 개 이상의 프로세스를 할당하지 않습니다. --overcommit을 지정하면 CPU 당 둘 이상의 프로세스를 명시 적으로 허용합니다.

참고 클러스터 구성에 따라이 나 mpirun로도 작동하지 않을 수 있지만, 당신이 좋은 이유가되지 않음을하지 않는 한 나는 srun으로 다루고 싶어요.

중요한 경고 : overcommited에서 실행할 때 기본적으로 대부분의 MPI 구현은 끔찍한 성능을 있습니다. 이 문제를 해결하는 방법은 훨씬 더 어렵고 다른 질문입니다.