MPI 不是 运行 在 FORTRAN 代码中并行
MPI not running in parallel in a FORTRAN code
我正在尝试在我的 Ubuntu (14.04) 机器上安装 OpenMPI,我认为我已经成功了,因为我可以 运行 使用 [=16] 编码=],但最近我注意到它并不是真正的 运行ning 并行。
我使用以下选项安装了 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
检查过它是 运行ning在几个节点中。
但是现在我写了一个简单的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
我设法解决了。老实说,这很愚蠢。出于某种原因,我没有使用正确的 OpenMPI 安装(我不知道它使用的是哪个)。我使用正确的 mpif90
和 运行 重新编译它使用正确的 mpirun
现在我得到了预期的结果。
抱歉造成混淆,但我对此很陌生。并感谢您的帮助!
我正在尝试在我的 Ubuntu (14.04) 机器上安装 OpenMPI,我认为我已经成功了,因为我可以 运行 使用 [=16] 编码=],但最近我注意到它并不是真正的 运行ning 并行。
我使用以下选项安装了 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
检查过它是 运行ning在几个节点中。
但是现在我写了一个简单的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
我设法解决了。老实说,这很愚蠢。出于某种原因,我没有使用正确的 OpenMPI 安装(我不知道它使用的是哪个)。我使用正确的 mpif90
和 运行 重新编译它使用正确的 mpirun
现在我得到了预期的结果。
抱歉造成混淆,但我对此很陌生。并感谢您的帮助!