4

我正在尝试使用“mpif90”在 Fedora 21 中编译一些代码。

首先我用'yum'安装openmpi:

[root@localhost Inversion]# yum install openmpi
Loaded plugins: langpacks
Package openmpi-1.8.3-2.fc21.x86_64 already installed and latest version
Nothing to do

但是当我使用'make'编译时它不起作用:

[root@localhost Inversion]# make all
mpif90 -O3 -c src/dispersion.f90
make: mpif90: Command not found
Makefile:18: recipe for target 'obj' failed
make: *** [obj] Error 127

如您所见,我已经下载了 openmpi 包,但它不会编译。

4

2 回答 2

5

您无法编译,因为您没有加载必要的模块。

您需要加载环境模块,这是 Fedora 在安装时处理 openmpi 的方式:

dnf install openmpi

(在 Fedora 25 中)

只需按照以下步骤操作:

  1. 在您的终端中,执行以下操作:

    module avail
    

    您应该会看到类似这样的输出:

    --------------------- /usr/share/Modules/modulefiles ----------------------
    dot         module-git  module-info modules     null        use.own
    ---------------------------- /etc/modulefiles -----------------------------
    mpi/openmpi-x86_64
    

    请注意,有mpi/openmpi-x86_64可供您“加载”的模块。

  2. 在您的终端中,您只需执行以下操作:

    module load mpi/openmpi-x86_64
    
  3. 现在您可以访问所有 mpi 编译器等mpif90mpic++您可以看到编译器二进制文件存储在/usr/lib64/openmpi/bin

    $ which mpif90 
    

    你会看到输出是:

    /usr/lib64/openmpi/bin/mpif90
    
于 2017-05-01T23:17:00.457 回答
3
dnf whatprovides "*/mpif90"

告诉你什么包提供了这个二进制文件。在 Fedora 中,您可以从包openmpi-devel中获取它。mpich所以跑步

yum install openmpi-devel

应该为你做这项工作。

于 2016-07-01T13:22:11.870 回答