我下载了一个大型生态系统模型(生态系统人口统计),它必须在linux中编译,它使用了MPI和hdf5。我已经安装了mpich (在centOS 7上),以便使用Gfortran编译器编译ED模型。但它给了我一个著名的错误
Can't find file: mpif.h我通过“哪个mpif.h”查找文件,它没有返回任何内容,所以我将路径设置如下:
PATH=/home/hamid/edpacks/mpich-install/bin:$PATH
export PATH现在,mpif.h返回文件的路径,但是当我再次尝试./install模型时,它给出了相同的错误。问题是我不知道如何设置这个路径,以及从模型内部到mpich的路径。是否必须从包含文件或makefile设置路径?
发布于 2018-08-03 00:05:27
如果出于某种奇怪的原因,mpif.h文件确实位于
/home/hamid/edpacks/mpich-install/bin然后,您需要将其移动到
/home/hamid/edpacks/mpich-install/include因为这是
PAR_INCS=-I$(MPI_PATH)/include 指向该目录,因此编译器将在该目录中查找头文件(例如mpif.h)。
(顺便说一句,增加处理器的数量并不会自动降低程序的速度;它取决于程序的编写方式。此外,如果您在笔记本电脑上运行此程序,而笔记本电脑最有可能不超过4个内核,那么增加超过4个内核的处理器数量肯定会减慢甚至是hello-world MPI程序的速度。)
发布于 2019-03-17 18:34:34
您不能使用which搜索外壳文件,因为它只查找可执行文件(“that --显示( .h )命令的完整路径”)。您必须使用其他命令,如find、locate或仅使用桌面搜索。
文件应该在某个include目录中。当用正确的MPI编译器包装器(mpif90、mpifort或类似的)编译Fortran程序时,库应该自动包含在内。如果不是,您可以使用-Idirectory_name编译器标志来手动包含它。
如果您的Makefile在某个环境变量中包含目录,如George所示,您只需将目录名添加到该环境变量即可。
https://stackoverflow.com/questions/26748141
复制相似问题