Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing MPI在FORTRAN代码中未并行运行_Parallel Processing_Mpi_Openmpi - Fatal编程技术网

Parallel processing MPI在FORTRAN代码中未并行运行

Parallel processing MPI在FORTRAN代码中未并行运行,parallel-processing,mpi,openmpi,Parallel Processing,Mpi,Openmpi,我正试图在我的Ubuntu(14.04)机器上安装OpenMPI,我认为我已经成功了,因为我可以运行带有mpirun的代码,但最近我注意到它并没有真正并行运行 我使用以下选项安装了openmpi: ./configure CXX=g++ CC=gcc F77=gfortran \ F90=gfortran \ FC=gfortran \ --enable-mpi-

我正试图在我的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

我设法解决了它。老实说,这很愚蠢。出于某种原因,我没有使用正确的OpenMPI安装(我不知道它使用的是哪种)。我使用正确的
mpif90
重新编译,并使用正确的
mpirun
运行它,现在我得到了预期的结果。
很抱歉搞混了,但我对这一点还不熟悉。谢谢你的帮助

我设法解决了它。老实说,这很愚蠢。出于某种原因,我没有使用正确的OpenMPI安装(我不知道它使用的是哪种)。我使用正确的
mpif90
重新编译,并使用正确的
mpirun
运行它,现在我得到了预期的结果。
很抱歉搞混了,但我对这一点还不熟悉。谢谢你的帮助

您可能已经认识到,所报告的v1.6.x版本是一个退役版本。检查打开的MPI是否有更新的版本(发布此版本时为V3.0.0+),并使用所有可用的诊断工具,如
man mpirun
中所述(
--报告绑定
等)为了更好地诊断问题,请仔细检查并更新您的实际代码执行环境详细信息,包括socket/core映射以及本文原始文章中的其他内容,以便更好地记录使用环境。好的,Juan?这通常发生在
mpirun
libmpi时。因此
不匹配。例如,如果您使用Open MPI中的
mpirun
,但您的应用程序链接了MPICH或其他版本的Open MPI。您可能已经意识到,报告的版本1.6.x是一个已失效的版本。检查打开的MPI是否有更新的版本(发布此版本时为V3.0.0+),并使用所有可用的诊断工具,如
man mpirun
中所述(
--报告绑定
等)为了更好地诊断问题,请仔细检查并更新您的实际代码执行环境详细信息,包括socket/core映射以及本文原始文章中的其他内容,以便更好地记录使用环境。好的,Juan?这通常发生在
mpirun
libmpi时。因此
不匹配。例如,如果您使用Open MPI中的
mpirun
,但您的应用程序链接了MPICH或其他版本的Open MPI。