2017-03-01 6 views
1

로컬 컴퓨터에서 doMPI 패키지를 실행하려고하기 때문에 이전에 테스트를 수행 할 수 있습니다. 클러스터에 작업 제출. 나는 Mac OSX Yosemite를 사용 중이며 brew를 통해 열린 mpi 2.0.2를 설치했습니다.doMPI 오류 : 응용 프로그램에서 요청한 슬롯 2 개를 충족시킬 수있는 슬롯이 시스템에 충분하지 않습니다.

mpirun -V

mpirun (Open MPI) 2.0.2

Report bugs to http://www.open-mpi.org/community/help/

나는 doMPI에 대한 소개를 통해 읽고 난

mpirun -H localhost R --slave -f sincMPI.R

불행히도 나는 다음과 같은 오류가 계속 얻을 데모의 예제를 실행하기 위해 노력하고있어. 내가 봤지만 주위에 뭘 잘못 알아낼 수가 없어.

> Loading required package: foreach Loading required package: iterators 
> Loading required package: Rmpi 
> -------------------------------------------------------------------------- 
> There are not enough slots available in the system to satisfy the 2 
> slots that were requested by the application: 
> /Library/Frameworks/R.framework/Resources/bin/Rscript 
> 
> Either request fewer slots for your application, or make more slots 
> available for use. 
> -------------------------------------------------------------------------- 
> Error in mpi.comm.spawn(slave = rscript, slavearg = args, nslaves = 
> count, : MPI_ERR_SPAWN: could not spawn processes Calls: 
> startMPIcluster -> mpi.comm.spawn -> .Call Execution halted 
> ------------------------------------------------------- 
> Primary job terminated normally, but 1 process returned a non-zero exit code.. 
>Per user-direction, the job has been aborted. 
> ------------------------------------------------------- 
> -------------------------------------------------------------------------- 
> mpirun detected that one or more processes exited with non-zero 
> status, thus causing the job to be terminated. The first process to do 
> so was: 
> 
> Process name: [[27630,1],0] Exit code: 1 

편집 : 지정된 근무

아래의 답변에 따라 테스트 결과 :

mpirun -H localhost,localhost,localhost R --slave -f sincMPI.R 

나는 startMPIcluster()에서 카운트 = 2를 꺼내서 또한 일했다.

startMPIcluster() #in sincMPI.R 
mpirun -H localhost,localhost,localhost R --slave -f sincMPI.R 

count = 2를 취하면 mpi로 호스트 수를 변경할 수 있습니다. 여기서 네 개의 호스트를 지정합니다.

startMPIcluster() #in sincMPI.R 
mpirun -H localhost,localhost,localhost,localhost R --slave -f sincMPI.R 

이 방법을 사용하여 사용 가능한 코어 수 이상을 지정할 수도 있습니다. 나는 8 개의 (논리적 인) 코어를 가지고 있지만 9 개의 호스트를 지정할 수 있으며 실행됩니다. startMPIcluster()에

mpirun -H localhost,localhost,localhost,localhost,localhost,localhost,localhost,localhost,localhost R --slave -f sincMPI.R 

그러나, 당신은 넣어 수 없습니다 수 = 9

startMPIcluster(count=9) 
Error in startMPIcluster(count = 9) :  
    count must be either unspecified, or set to 8 
Execution halted 

그래서, 아마도 맥에 테스트 MPI에 대한 가장 좋은 방법은 startMPIcluster의 수를 설정하지 않는 것입니다, 사용 -H 작업 수를 제어합니까?

답변

1

mpirun -H localhost 옵션을 사용하면 MPI 유니버스 크기가 하나뿐이므로 startMPIcluster을 호출하면 mpi.comm.spawn이 실패하게됩니다. -H localhost,localhost,localhost을 사용하는 경우 유니버스 크기는 3이고 예제가 작동해야합니다. (나는에 mpirun을 사용 하지 해요 때) 하나의 컴퓨터에 대화 형으로 실행할 때 난 단지 카운트 인수 startMPIcluster 전화


업데이트

참고. mpirun으로 doMPI 스크립트를 실행할 때 mpirun을 통해 작업자 수를 더 쉽게 제어 할 수 있습니다.

+0

잘 돌아갔습니다. 감사합니다! MPI가 Mac에서 어떻게 작동 하는지를보기 위해 몇 가지 실험을했습니다. 기록을 위해, 나는 원래의 질문에 결과를 넣을 것입니다. –