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

Mik*_*ail 5 linux g++ icc include-path ubuntu-10.10

我从未在VS08之外做过任何重大编程.

我正在尝试使用两个相关的make文件中的任何一个编译一个名为LAMMPS的程序.一个调用g ++,另一个调用icc(英特尔的编译器).

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中

我的理解是我需要设置读取的$ PATH变量

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 ++找到它?

Wir*_*nto 5

mpi.h是MPI库的标题.如果在makefile中使用mpic ++ MPI编译器包装而不是g ++,那将包括在内.mpic ++将调用适当的编译器.根据您的描述,您的ubuntu机器上安装了openmpi软件包.

有关详细信息,请参阅手册,例如

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

也许您需要查看openmpi手册,了解如何设置其他编译器.不确定这是否可以在openmpi本身构建完成后完成.默认情况下我认为在Ubuntu中,openmpi编译包装器只会调用g ++.CMIIW.


Mik*_*ail 2

好的,所以当我将 cc 设置为“mpic++.mpich2”而不是“mpic++”时,我让它与 g++ 一起工作