MPI não executando paralelamente em um código FORTRAN
Estou tentando instalar um OpenMPI na minha máquina Ubuntu (14.04) e achei que tinha conseguido, porque posso executar códigos commpirun
, mas recentemente notei que não está realmente funcionando paralelamente.
Eu instaleiopenmpi
com as seguintes opções:
./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
Como eu disse, eu executei um código (não escrito por mim) e parecia funcionar em paralelo, porque verifiquei comtop
e estava sendo executado em vários nós.
Mas agora eu escrevi um código FORTRAN simples:
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
Mas quando eu corro com
mpirun -n 4 ./hello_MPI
Recebo a mesma saída 4 vezes, mostrando que está apenas executando o mesmo processo único em 4 processadores diferentes
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
Eu executei esse mesmo código em uma máquina diferente e recebo a saída esperada:
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