내 우분투 (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
보고 된 v 1.6.x가 이전 버전 릴리스라는 것을 이미 알고있을 것입니다. 'man mpirun' ('--report-bindings' 외) 에서처럼, Open MPI를 조금 더 최근의 버전 (이것을 게시 할 때 v 3.0.0+)으로 점검하고 사용 가능한 모든 진단 도구를 사용하십시오 문제를 더 잘 진단 할 수 있습니다. 소켓/코어 맵으로 진단 된 실제 코드 실행 환경 세부 정보를 여기에서 원래 게시물로 친절하게 검토하고 업데이트하여 사용 컨텍스트를 더 잘 문서화하십시오. 좋아, 후안? – user3666197
이것은 일반적으로'mpirun'과'libmpi.so '가 일치하지 않을 때 발생합니다. 예를 들어 Open MPI에서'mpirun'을 사용했지만 앱이 MPICH 또는 Open MPI의 다른 버전과 링크 된 경우. –