2017-11-21 12 views
1

내 우분투 (14.04) 기계에 OpenMPI 실행을 설치하려고하고, 나는 내가 성공했다고 생각 나는 mpirun으로 코드를 실행할 수 있기 때문에,하지만 최근에 내가 발견 한 그것은 진정으로 병렬로 실행되지 않습니다. 내가, 내가 (안 자신에 의해 작성) 코드를 실행했다고 말했습니다하고 병렬로 작동하는 것 같았다으로 내가 top으로 확인하기 때문에,MPI는 FORTRAN 코드에서 병렬로 실행되지

./configure CXX=g++ CC=gcc F77=gfortran \ 
          F90=gfortran \ 
          FC=gfortran \ 
     --enable-mpi-f77 \ 
     --enable-mpi-f90 \ 
     --prefix=/opt/openmpi-1.6.5 
make all 
sudo make install 

그것은이었다

나는 다음과 같은 옵션을 openmpi 설치 여러 노드에서 실행 중입니다.

하지만 지금은 간단한 FORTRAN 코드를 작성했습니다 :

PROGRAM hello_MPI 
    INCLUDE "mpif.h" 
    INTEGER :: err, size, rank 
    CALL MPI_INIT(err) 
    IF (err /= MPI_SUCCESS) STOP 'Init failed' 
    CALL MPI_COMM_RANK(MPI_COMM_WORLD, rank, err) 
    CALL MPI_COMM_SIZE(MPI_COMM_WORLD, size, err) 
    PRINT*, "Hello world from process ", rank, " of ", size, " processes" 
    CALL MPI_FINALIZE(err) 
END PROGRAM 

하지만

mpirun -n 4 ./hello_MPI 

그것을 실행할 때 내가 그냥 같은 실행되고 있는지 보여주는, 동일한 출력 4 번을받을를 4 개의 서로 다른 프로세서에서 단일 프로세스 사용

Hello world from process   0 of   1 processes 
Hello world from process   0 of   1 processes 
Hello world from process   0 of   1 processes 
Hello world from process   0 of   1 processes 

다른 컴퓨터에서이 동일한 코드를 실행했습니다. 예상 출력을 얻었습니다 :

Hello world from process   0 of   4 processes 
Hello world from process   1 of   4 processes 
Hello world from process   2 of   4 processes 
Hello world from process   3 of   4 processes 
+0

보고 된 v 1.6.x가 이전 버전 릴리스라는 것을 이미 알고있을 것입니다. 'man mpirun' ('--report-bindings' 외) 에서처럼, Open MPI를 조금 더 최근의 버전 (이것을 게시 할 때 v 3.0.0+)으로 점검하고 사용 가능한 모든 진단 도구를 사용하십시오 문제를 더 잘 진단 할 수 있습니다. 소켓/코어 맵으로 진단 된 실제 코드 실행 환경 세부 정보를 여기에서 원래 게시물로 친절하게 검토하고 업데이트하여 사용 컨텍스트를 더 잘 문서화하십시오. 좋아, 후안? – user3666197

+0

이것은 일반적으로'mpirun'과'libmpi.so '가 일치하지 않을 때 발생합니다. 예를 들어 Open MPI에서'mpirun'을 사용했지만 앱이 MPICH 또는 Open MPI의 다른 버전과 링크 된 경우. –

답변

0

나는 그것을 해결할 수있었습니다. 솔직히 말해서, 매우 바보 같았습니다. 어떤 이유로 나는 적절한 OpenMPI 설치를 사용하지 않고 있었다. (나는 그것이 어떤 것을 사용하고 있는지 전혀 모른다.) 내가 오른쪽 을 사용하여 다시 컴파일하고 오른쪽 mpirun을 사용하여 그것을 실행하고 지금 나는 예상 결과를 얻을. 혼란을 가져 주어서 죄송합니다. 도와 줘서 고마워!