在Ubuntu上为mpi.h设置G ++或ICC

我从未在VS08之外做过任何主要的编程。

我试图用两个相关的make文件中的任何一个编译一个名为LAMMPS的程序。 一个调用g ++,另一个调用icc(Intel的编译器)。

icc产生这个错误:

icc -O -DLAMMPS_GZIP -DMPICH_SKIP_MPICXX -DFFT_FFTW -M write_restart.cpp> write_restart.d write_restart.cpp(15):灾难性错误:无法打开源文件“mpi.h”#include“mpi.h”

和g ++抛出这个错误

g ++ -g -O -DLAMMPS_GZIP -DMPICH_SKIP_MPICXX -DFFT_FFTW -M verlet.cpp> verlet.d pointers.h:25:致命错误:mpi.h:没有这样的文件或目录编译终止。

mpi.h文件位于/ usr / lib / openmpi / include中

这是我的理解,我需要设置$ PATHvariables读取

bash:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / X11R6 / bin:/ opt / intel / bin:/ usr / lib /了openmpi /包括:

和当前读取的$ LD_LIBRARY_PATH

/ usr / lib中/的openmpi / lib目录下:

那么,如何包含mpi.h文件呢? 所以icc或g ++find它?

mpi.h是MPI库的头文件。 如果在makefile中使用mpic ++ MPI编译器封装代替g ++,那将包含这些内容。 mpic ++会调用适当的编译器。 从你所描述的你已经安装在你的Ubuntu机器上的openmpi软件包。

欲了解更多信息,你需要查阅手册,例如

http://lammps.sandia.gov/doc/Section_start.html#2_2 (对于LAMMPS)

也许你需要看看如何设置额外的编译器openmpi手册。 不知道这是否可以完成openmpi本身之后。 默认情况下,我认为在Ubuntu openmpi编译器包装只会调用g ++。 CMIIW。

好的,所以我把它设置为“mpic ++。mpich2”而不是“mpic ++”时使用g ++。

你可以尝试编译使用openmpi make文件在/ src / make make openmpi

在我的情况下,这个选项是成功的