и теперь я получаю ожидаемый результат. Извините за путаницу, но я новичок в этом. И спасибо за помощь!
аюсь установить OpenMPI на мою машину с Ubuntu (14.04), и я подумал, что у меня все получилось, потому что я могу запускать коды сmpirun
, но недавно я заметил, что он не работает параллельно.
Я установилopenmpi
со следующими параметрами:
./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
Как я уже сказал, я запустил код (не написанный сам), и он, казалось, работал параллельно, потому что я проверил сtop
и он работал в нескольких узлах.
Но теперь я написал простой код на Фортране:
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