4

我的计算机上有一个代码,Petsc它依赖于mpi. 在我的电脑上它运行良好。我把它放在集群上,导出路径gccPetscopenmpi(虽然我mpich在我的电脑上使用我希望openmpi也能工作)到LD_LIBRARY_PATHPATH。我还更改了makefile中的路径。Petsc、gcc、openmpi 在集群上都可用,所以我没有配置任何东西。当我这样做时make,编译器给出了错误:

fatal error: mpi.h: No such file or directory

我知道我没有提供完整的信息,但如果需要我可以提供更多信息。我怎样才能Petsc知道在哪里mpi.h

4

2 回答 2

2

通常,您应该使用mpicc(或mpicxx用于 C++)而不是gcc(或用于 C++)进行编译g++。这些命令是简单的包装器gccg++只需自动添加适当的内容-I/path/to/mpi/includes-L/path/to/mpi/libs并且应该包含在您的openmpi安装中。如果没有,只需添加-I/path/to/mpi/includes命令即可编译相应的文件。这告诉编译器在哪里寻找合适的头文件。

于 2015-12-09T18:05:35.800 回答
-3

回答问题。为了防止 C/C++ 编辑器在您输入“特殊代码”时显示错误,只需使用:

#include </usr/include/mpi/mpi.h>

这似乎是一个链接——但这样做会关闭 Netbeans 编辑器中的错误,这样我就可以在不分心的情况下进行编码。注意:使用 Ubuntu 18.04 Desktop 作为编辑机——并测试运行机——但我使用 mpic 手动编译,如前所述。

sudo mpicc c_pi.c -o c_pi

and then...
mpiexec ./c_pi

hth

于 2018-05-24T21:33:29.747 回答