【问题标题】:MPI not running in parallel in a FORTRAN codeMPI 未在 FORTRAN 代码中并行运行
【发布时间】: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 等)中所述,以便更好地诊断问题——请查看并更新您在此处原始帖子中诊断到套接字/核心映射和其他的实际代码执行环境详细信息,以更好地记录使用上下文。好的,胡安?
  • 这通常发生在mpirunlibmpi.so 不匹配时。例如,如果您使用 Open MPI 中的 mpirun,但您的应用已链接到 MPICH 或其他版本的 Open MPI。

标签: parallel-processing mpi openmpi


【解决方案1】:

我设法解决了。老实说,这很愚蠢。出于某种原因,我没有使用正确的 OpenMPI 安装(我不知道它使用的是哪个)。我使用正确的mpif90 重新编译并使用正确的mpirun 运行它,现在我得到了预期的结果。 很抱歉造成混乱,但我对此很陌生。并感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 2017-01-16
    • 2016-12-30
    • 2011-01-16
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2013-12-20
    相关资源
    最近更新 更多