2011-08-03 1 views
3

단일 시스템에서 여러 프로세스를 실행할 때 테스트 프로그램이 올바르게 작동합니다.여러 호스트간에 프로세스를 배포 할 때 Open MPI 프로그램이 작동하지 않습니다.

$ ./mpirun -np 2 ./mpi-test 
Hi I'm A:0 
Hi I'm A:1 
A:1 sending 11... 
A:1 sent 11 
A:0 received 11 from 1 
all workers checked in! 

여러 호스트에서 동일한 프로그램을 실행하면 프로세스가 각 호스트에서 생성되지만 MPI_Send는 절대로 반환되지 않습니다.

$ ./mpirun -np 2 -host A,B ./mpi-test 
Hi I'm A:0 
Hi I'm B:1 
B:1 sending 11... 

다른 샘플 MPI 프로그램을 사용해 보았는데 같은 문제가 발생했습니다. 어떤 생각이 잘못 되었습니까?

EDIT : 모든 프로세스가 해당 시스템에서 생성되면 원격 시스템에서도 실행됩니다.

코드 :

#include <mpi.h> 

int main(int argc, char** argv) 
{ 
    MPI::Init(); 
    int rank = MPI::COMM_WORLD.Get_rank(); 
    int size = MPI::COMM_WORLD.Get_size(); 
    char name[256]; 
    int len; 
    MPI::Get_processor_name(name, len); 

    printf("Hi I'm %s:%d\n", name, rank); 

    if (rank == 0) { 
     while (size > 1) { 
      int val; 
      MPI::Status status; 
      MPI::COMM_WORLD.Recv(&val, 1, MPI::INT, MPI::ANY_SOURCE, MPI::ANY_TAG, status); 
      int source = status.Get_source(); 
      printf("%s:0 received %d from %d\n", name, val, source); 
      size--; 
     } 
     printf("all workers checked in!\n"); 
    } 
    else { 
     int val = rank + 10; 
     printf("%s:%d sending %d...\n", name, rank, val); 
     MPI::COMM_WORLD.Send(&val, 1, MPI::INT, 0, 0); 
     printf("%s:%d sent %d\n", name, rank, val); 
    } 
    MPI::Finalize(); 

    return 0; 
} 

편집 :

$ ./mpirun --bynode -host A,B --tag-output ompi_info -v ompi full --parsable 
[1,0]<stdout>:package:Open MPI [email protected] Distribution 
[1,0]<stdout>:ompi:version:full:1.4.3 
[1,0]<stdout>:ompi:version:svn:r23834 
[1,0]<stdout>:ompi:version:release_date:Oct 05, 2010 
[1,0]<stdout>:orte:version:full:1.4.3 
[1,0]<stdout>:orte:version:svn:r23834 
[1,0]<stdout>:orte:version:release_date:Oct 05, 2010 
[1,0]<stdout>:opal:version:full:1.4.3 
[1,0]<stdout>:opal:version:svn:r23834 
[1,0]<stdout>:opal:version:release_date:Oct 05, 2010 
[1,0]<stdout>:ident:1.4.3 
[1,1]<stdout>:package:Open MPI [email protected] Distribution 
[1,1]<stdout>:ompi:version:full:1.4.3 
[1,1]<stdout>:ompi:version:svn:r23834 
[1,1]<stdout>:ompi:version:release_date:Oct 05, 2010 
[1,1]<stdout>:orte:version:full:1.4.3 
[1,1]<stdout>:orte:version:svn:r23834 
[1,1]<stdout>:orte:version:release_date:Oct 05, 2010 
[1,1]<stdout>:opal:version:full:1.4.3 
[1,1]<stdout>:opal:version:svn:r23834 
[1,1]<stdout>:opal:version:release_date:Oct 05, 2010 
[1,1]<stdout>:ident:1.4.3 

답변

1

A에서 1.5.3으로 업그레이드하고 C에서 1.5.3을 설치했습니다. 업그레이드인지 또는 B와 관련된 문제인지는 모르겠지만 모든 것이 지금 작동 중입니다.

  • 원래 설정 : 노드 A (아치 리눅스 열기 1.4.3 MPI), 노드 B (우분투 열기 MPI 1.4.3)
  • 작업 설정 : 참고로

    노드 A (아마도 간단한 네트워크 문제를 배제하도록 아치 리눅스, 오픈 MPI 1.5.3), 노드 C (아치 리눅스, 1.5.3 열기 MPI)는

0

ompi_info이에 대한 일반적인 이유는 무엇인가 원격 호스트에 제대로 설정되지 않는 것입니다; 로그인/네트워크 문제이거나 MPI 라이브러리/실행 파일 또는 프로그램 자체가 원격 호스트에서 발견되지 않을 수 있습니다.

당신이

mpirun -np 2 -host A,B hostname 

을하려고하면 어떻게됩니까?

+0

그것은, – Keith

+0

확인을 B를 출력; 이제는 사소한 MPI 헬로우 월드 프로그램에 대해 어떨까요? #include int main() {MPI :: Init(); int rank = MPI :: COMM_WORLD.Get_rank(); int size = MPI :: COMM_WORLD.Get_size(); printf ("% d/% d/\ n", 순위, 크기); MPI :: Finalize(); 0을 반환; } –

+0

안녕하세요, 0 of 2 안녕하세요, 1 of 2 – Keith

관련 문제