Compilation can';找不到mpif.h编译错误?

Compilation can';找不到mpif.h编译错误?,compilation,compiler-errors,parallel-processing,mpi,mpich,Compilation,Compiler Errors,Parallel Processing,Mpi,Mpich,我下载了一个大的生态系统模型(生态系统人口统计),它必须在linux中编译,并且使用MPI和hdf5。我已经安装了mpich(在centOS 7上)以使用Gfortran编译器编译ED模型。但它给了我一个著名的错误 Can't find file: mpif.h 我通过“which mpif.h”查找了文件,但它没有返回任何内容,因此我将路径设置为: PATH=/home/hamid/edpacks/mpich-install/bin:$PATH export PATH 现在哪个mpif.h

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

Can't find file: mpif.h
我通过“which mpif.h”查找了文件,但它没有返回任何内容,因此我将路径设置为:

PATH=/home/hamid/edpacks/mpich-install/bin:$PATH
export PATH
现在哪个mpif.h返回文件的路径,但是当我尝试/安装模型时,它再次给我相同的错误。
问题是我不知道如何设置这个路径以及从模型内部到mpich的路径。我必须从include file或makefile设置路径吗

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

/home/hamid/edpacks/mpich-install/bin
然后你需要把它移到

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

PAR_INCS=-I$(MPI_PATH)/include 
指向该目录,以便编译器在该目录中查找头文件(例如mpif.h)


(顺便说一句,增加处理器数量并不会自动降低程序的速度;这取决于程序的编写方式。此外,如果您在笔记本电脑上运行此程序(笔记本电脑的内核可能不超过4个),则增加处理器数超过此数肯定会降低甚至hello world MPI程序的速度。)

不能使用
搜索
.h
文件,只能查找可执行文件(“它-显示(shell)命令的完整路径”)。您必须使用其他命令,如
find
locate
,或仅使用桌面搜索

文件应该在某个
include
目录中的某个地方。使用正确的MPI编译器包装器(
mpif90
mpifort
或类似工具)编译Fortran程序时,应自动包含库。如果不是,您可以使用
-Idirectory\u name
编译器标志手动包含它


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

您是如何编译应用程序的?您是否使用MPI编译器包装器(
mpifortran
)?正如@WesleyBland所问的,您是否使用MPI编译器包装器(
mpicc
mpif90
等)。另一个
,它只搜索您的$PATH。
mpif.h
文件是一个头文件,将位于include目录中(
/home/hamid/edpacks/mpich install/include);是的,我使用的是mpicc和mipf90,我认为问题所在的include文件中的设置如下:(CMACH=PC_GFORTRAN F_COMP=mpif90 F_OPTS=-g-O2-ffree line length none-fno整个文件C_COMP=mpicc_OPTS=-g-O2 LOADER=mpif90 LOADER_OPTS=${F_OPTS}C_LOADER=mpicc LIBS=)然后(MPI_PATH=/home/hamid/edpacks/mpich install PAR_INCS=-I$(MPI_PATH)/include PAR_LIBS=-L$(MPI_PATH)/lib PAR_DEFS=-DRAMS_MPI)@HamidDashti我不熟悉ED,可能是Makefile变量,如果设置
FFLAGS=$(PAR_INCS),会发生什么情况
?作为旁注,您是否能够构建一个简单的
hello\u world
MPI测试?事实上,我对并行计算是新手,所以我决定从hello world开始使用Mpich2编译。以下是代码(mpicc helloworld.c-o myhello\mpirun-nc 2./myhello)但是我注意到,随着CPU数量的增加,挂钟的时间增加了,我希望它会减少?!