无法找到mpif.h编译错误?

时间:2014-11-05 01:16:17

标签: compilation compiler-errors parallel-processing mpi mpich

我已下载了一个大型生态系统模型(Ecosystem Demography),它必须在linux中编译,并使用MPI和hdf5。我安装了mpich(在centOS 7上)用Gfortran编译器编译ED模型。但它给了我一个着名的错误

Can't find file: mpif.h

我通过&#34来查找文件;其中mpif.h"并且它什么也没有返回,所以我将PATH设置如下:

PATH=/home/hamid/edpacks/mpich-install/bin:$PATH
export PATH

现在哪个mpif.h返回文件的路径但是当我尝试./install模型时它再次给出了同样的错误。 问题是我不知道如何设置这条路径以及模型内部的mpich路径。我是否必须设置包含文件或makefile的路径?

2 个答案:

答案 0 :(得分:1)

如果出于某种奇怪的原因,mpif.h文件确实在

/home/hamid/edpacks/mpich-install/bin

然后您需要将其移至

/home/hamid/edpacks/mpich-install/include

自此

PAR_INCS=-I$(MPI_PATH)/include 

指向该目录,因此编译器将在该目录中查找头文件(例如mpif.h)。

(顺便说一句,增加处理器数量并不会自动降低程序速度;这取决于程序的编写方式。此外,如果您是在笔记本电脑上运行该程序,则很可能没有更多功能了。多于4核,然后增加处理器数量,即使是世界一流的MPI程序,也肯定会减慢速度。)

答案 1 :(得分:0)

您无法使用.h搜索which文件,因为该文件仅查找可执行文件(“其中-显示(外壳)命令的完整路径”)。您必须使用其他命令,例如findlocate或仅使用桌面搜索。

文件应位于某个地方的include目录中。当使用正确的MPI编译器包装(mpif90mpifort或类似的文件)编译Fortran程序时,应自动包含该库。如果不是,则可以使用-Idirectory_name编译器标记来手动添加它。

如George所示,如果Makefile在某些环境变量中包含目录,则只需将目录名添加到该环境变量中即可。