我正在尝试在我的Ubuntu(14.04)计算机上安装OpenMPI,我认为我已成功,因为我可以使用 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
并且它在几个节点中运行。
但现在我写了一个简单的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 :(得分:0)
我设法解决了这个问题。说实话,这很愚蠢。出于某种原因,我没有使用正确的OpenMPI安装(我不知道它使用的是什么)。我使用右mpif90
重新编译并使用右mpirun
运行它,现在我得到了预期的结果。
对不起,我很陌生,但我对此很陌生。谢谢你的帮助!