【发布时间】:2015-01-01 02:38:47
【问题描述】:
我下载了一个大型生态系统模型(Ecosystem Demography),它必须在 linux 中编译,它使用 MPI 和 hdf5。我已经安装了 mpich(在 centOS 7 上)用 Gfortran 编译器编译 ED 模型。但它给了我著名的错误
Can't find file: mpif.h
我已经通过“which mpif.h”查找了文件,但它什么也没返回,所以我将 PATH 设置如下:
PATH=/home/hamid/edpacks/mpich-install/bin:$PATH
export PATH
现在 which mpif.h 返回文件的路径,但是当我再次尝试 ./install 模型时,它给了我同样的错误。 问题是我不知道如何设置此路径以及从模型内部到 mpich 的路径。我必须从包含文件或生成文件中设置路径吗?
【问题讨论】:
-
你是如何编译你的应用程序的?您是否使用 MPI 编译器包装器 (
mpifortran)? -
正如@WesleyBland 所问,您是否使用 MPI 编译器包装器(
mpicc、mpif90等)。which也只搜索你的 $PATH。mpif.h文件是一个标头,将位于包含目录中(在您的情况下为/home/hamid/edpacks/mpich-install/include)。 -
谢谢;是的,我正在使用 mpicc 和 mipf90,我认为问题所在的包含文件中的设置如下:(CMACH=PC_GFORTRAN F_COMP=mpif90 F_OPTS=-g -O2 -ffree-line-length-none -fno-whole-文件 C_COMP=mpicc C_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)/包括 PAR_LIBS=-L$(MPI_PATH)/lib PAR_DEFS=-DRAMS_MPI)
-
@HamidDashti 我不熟悉 ED,它可能是 Makefile 变量,如果设置
FFLAGS=$(PAR_INCS)会发生什么?作为旁注,您能否构建一个简单的hello_worldMPI 测试? -
其实我是并行计算的新手,所以我决定从使用 Mpich2 编译的 hello world 开始。这是代码(mpicc helloworld.c -o myhello \ mpirun -nc 2 ./myhello. )它可以工作。但是我注意到通过增加 CPU 的数量,挂钟时间增加了,我希望它会减少?!
标签: compilation compiler-errors parallel-processing mpi mpich