MPI no se ejecuta en paralelo en un código FORTRAN
Estoy tratando de instalar un OpenMPI en mi máquina Ubuntu (14.04), y pensé que había tenido éxito, porque puedo ejecutar códigos conmpirun
, pero recientemente me di cuenta de que realmente no se ejecuta en paralelo.
lo instaléopenmpi
con las siguientes opciones:
./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 dije, he ejecutado un código (no escrito por mí mismo) y parecía funcionar en paralelo, porque lo verifiqué contop
y se estaba ejecutando en varios nodos.
Pero ahora he escrito un código FORTRAN simple:
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
Pero cuando lo ejecuto con
mpirun -n 4 ./hello_MPI
Obtengo la misma salida 4 veces, lo que demuestra que solo está ejecutando el mismo proceso en 4 procesadores 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
He ejecutado este mismo código en una máquina diferente y obtengo el resultado esperado:
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