2013-07-27 3 views
5

대학 클러스터에서 Rmpisnowfall을 실행하려고했지만 할당 된 컴퓨팅 노드 수에 관계없이 어떤 이유로 인해 snowfall 초기화가 하나의 노드에서만 계속 실행됩니다. 여기강설과 함께 MPI 클러스터 초기화 R

내가 그것을 초기화하고있어 방법은 다음과 같습니다

sfInit(parallel=TRUE, cpus=10, type="MPI") 

어떤 아이디어? 필요에 따라 설명을 제공하겠습니다.

+0

오류 메시지가 있습니까? – sgibb

+0

클러스터는 어떤 종류의 MPI를 실행합니까? –

+0

openMPI, 내가 아는 한 오류 메시지가 없습니다 (모든 것이 원활하게 실행되지만 sysadmin은 5 개가 할당되어 있어도 하나의 클러스터에서이 모든 것을 실행한다고 알립니다). 또한 나는 단지 하나의 노드가 하나의 클러스터가 아니라는 것을 알았다. – user1480248

답변

6

클러스터에서 Rmpi ​​기반 프로그램을 실행하려면 배치 대기열 시스템을 사용하여 여러 노드를 요청한 다음 mpirun/mpiexec와 같은 유틸리티를 통해 작업 스크립트에서 R 스크립트를 실행해야합니다. 이상적으로 mpirun 유틸리티는 일괄 처리 큐잉 시스템에 의해 어떤 노드가 할당되었는지를 자동으로 탐지하도록 구축되었습니다. 그렇지 않으면 어떤 노드를 사용할 지 알려면 --hostfile과 같은 mpirun 인수를 사용해야합니다.

당신의 경우에는 여러 개의 노드를 요청한 것처럼 들리므로 문제는 아마도 R 스크립트가 실행되는 방식 일 것입니다. 어떤 사람들은 mpirun/mpiexec을 사용해야한다는 것을 알지 못하기 때문에 스크립트가 단일 노드에서 실행됩니다. mpirun을 사용하고 있다면 Open MPI 설치가 배치 대기열 시스템에 대한 지원으로 구축되지 않았을 수 있습니다. 이 경우 일] 적으로 환경 변수 및/또는 파일을 통해 제공되는 일} 처리 큐 시스템에서 제공하는 정보로 적절한 호스트 파일을 작성해야합니다. 우리가 토크를 지원 열기 MPI를 구축하기 때문에

mpirun -np 1 R --slave -f par.R 

, 내가 --hostfile 옵션을 사용하지 마십시오 : 여기

내가 작업 스크립트에서 내 병렬 R 스크립트를 실행하는 데 사용할 전형적인으로 mpirun 명령입니다 : mpirun은 PBS_NODEFILE 환경 변수에서 사용할 노드를 자동으로 찾아냅니다. -np 1의 사용은 이상하게 보일 수 있지만 프로그램이 직원을 생성 할 경우 일반적으로 snow 패키지를 사용할 때 필요합니다. 나는 snowfall을 한번도 사용하지 않았지만, 소스 코드를 살펴본 결과, sfInit은 "카운트"인수를 가진 makeMPIcluster을 항상 호출하므로, 은 worker를 생성하게하므로 은 snowfall 인 MPI 클러스터에 필요하다고 생각합니다. . 그렇지 않으면 mpirun이 여러 노드에서 R 스크립트를 시작하고 각 노드는 원하는 노드가 아닌 자신의 노드에 10 명의 작업자를 생성합니다. 요령은 sfInit "cpus"인수를 일괄 처리 대기열 시스템에서 작업에 할당 된 노드 수와 일치하는 값으로 설정하는 것입니다. 당신은 Rmpi mpi.universe.size 기능을 유용하게 사용할 수 있습니다.

이 모든 것이 올바르게 수행되었다고 생각하면 문제는 R 스크립트에서 MPI 클러스터 객체가 생성되는 방식과 관련이있을 수 있지만 사용과 관련이 있다고 의심됩니다. 사용).

+0

고마워, 나는 mpirun을 사용하지 않았을 가능성이 가장 높다고 생각한다. 그래서 mpirun을 사용하기위한 문서는 다음과 같습니다 : # Invoke mpirun. # $ NSLOTS는 OGS에 의해 N으로 설정되며 "-pe mpi_M_tasks_per_node N"옵션으로 요청한 프로세서 수는 입니다. # M = 4이면 가능한 N은 4, 8, 12, 16,. . . # (Runningjobs 페이지의 표 2 참조) mpirun -np $ NSLOTS mpi_program arg1 arg2 .. 눈이 내 눈을 띄게하고 싶다면 -np 1을해야합니까? – user1480248

+1

@ user1480248 업데이트 된 답변에서 언급했듯이, '-np 1'을 강설과 함께 사용해야한다고 생각합니다. Rmpi 기반 패키지는 MPI 스폰을 사용하는 것이 다소 특이한 편이므로'-np '를 설정하는 방법에 대한 일반적인 조언은 잘못되었습니다. –

+0

그래서 16 개의 계산 노드가 할당되어 있고 cpus <- mpi.universe.size()를 실행 시키면이 노드 (시스템에서 액세스 권한을 제공함)의 모든 16 개의 코어를 활용하고 싶습니다. 모든 컴퓨팅 노드에서 사용할 수 있으며 완전히 활용할 수 있습니까? – user1480248