【发布时间】:2018-05-05 04:45:40
【问题描述】:
我正在尝试在我的 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
【问题讨论】:
-
您可能已经认识到,报告的 v 1.6.x 是一种退休版本。检查 Open MPI 以获得更新的版本(在发布此内容时为 v 3.0.0+),并使用所有可用的诊断工具,如
man mpirun(--report-bindings等)中所述,以便更好地诊断问题——请查看并更新您在此处原始帖子中诊断到套接字/核心映射和其他的实际代码执行环境详细信息,以更好地记录使用上下文。好的,胡安? -
这通常发生在
mpirun和libmpi.so不匹配时。例如,如果您使用 Open MPI 中的mpirun,但您的应用已链接到 MPICH 或其他版本的 Open MPI。
标签: parallel-processing mpi openmpi