5

我从来没有在 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++ 都能找到它?

4

3 回答 3

5

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。

于 2011-04-23T04:28:37.237 回答
2

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

于 2012-11-10T19:52:51.153 回答
0

您可以尝试使用 /src/MAKE make openmpi 中的 openmpi make 文件进行编译

就我而言,这个选项是成功的

于 2012-07-24T14:48:32.173 回答