mpif.h 未找到错误

mpif.h 未找到错误

我尝试在 ubuntu 上安装 openpi。我有一台 Ubuntu 18.04.4 LTS(64 位)桌面。我使用以下方法安装了 openmpi

sudo apt-get 安装 openmpi-bin openmpi-common openmpi-doc libopenmpi2 libopenmpi-dev openssh-client openssh-server

然后,在 .bashrc 中,我添加了以下两行:

回显导出 PATH="$PATH:/home/$USER/.openmpi/bin" >> /home/$USER/.bashrc

回显导出 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/$USER/.openmpi/lib/" >> /home/$USER/.bashrc

之后,我用达特茅斯 你好世界 mpi 编写一个小程序,编译并运行它,通过输入以下内容来检查 openmpi 安装是否正常:gfortran ubuntu.f90

这会导致以下错误

ubuntu.f90:2:错误:无法打开包含的文件“mpif.h”

ubuntu.f90 中的代码:

program hello
include 'mpif.h'
integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)

call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
print*, 'node', rank, ': Hello world'
call MPI_FINALIZE(ierror)
end

我努力了安装 libblacs-mpi-dev就像回答这个问题。 这问题似乎不相关。

答案1

要在 Fortran 程序中包含 C 样式的头文件,您需要使用 C 样式的预处理器指令

#include <mpif.h>

而不是本机 Fortraninclude语句,然后gfortran通过添加命令行开关来指示运行预处理器-cpp(或将源文件后缀更改为大写,F90这会导致预处理器默认运行)。例如,参见

然而包括mpif.h显然已被弃用,相反,你应该使用 MPI模块mpif90,并使用而不是直接调用来编译你的程序gfortran

前任。

$ cat ubuntu.f90 
program hello
use mpi
integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)

call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
print*, 'node', rank, ': Hello world'
call MPI_FINALIZE(ierror)
end

$ mpif90 ubuntu.f90

$ ./a.out 
 node           0 : Hello world

FWIW,您对PATH和的更改LD_LIBRAY_PATH可能不会产生任何效果,因为您已经openmpi使用以下方式安装到系统目录中apt

相关内容