2011-04-23 80 views
5

我从来没有在VS08之外做过任何主要编程。在Ubuntu上为mpi.h设置G ++或ICC

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

ICC产生这样的错误:

icc -O -DLAMMPS_GZIP -DMPICH_SKIP_MPICXX -DFFT_FFTW -M write_restart.cpp > write_restart.d write_restart.cpp(15): catastrophic error: cannot open source file "mpi.h" #include "mpi.h"

和g ++引发此错误

g++ -g -O -DLAMMPS_GZIP -DMPICH_SKIP_MPICXX -DFFT_FFTW -M verlet.cpp > verlet.d pointers.h:25: fatal error: mpi.h: No such file or directory compilation terminated.

的mpi.h文件位于/ usr/lib中/了openmpi /包括

它是我的理解是,我需要设置$ PATH变量,其中读取

bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/opt/intel/bin:/usr/lib/openmpi/include:

和$ LD_LIBRARY_PATH目前读

/usr/lib/openmpi/lib:

那么,如何一个包括mpi.h文件?所以icc或g ++找到它?

回答

2

好了,所以我把它与G ++合作设立毫升时作为代替 “MPIC++” “MPIC++ MPICH2”

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。

+0

Make文件吐出立即与崩溃>致命错误MPI_Comm_rank可执行:无效通信,错误堆栈: MPI_Comm_rank(106):MPI_Comm_rank(COMM = 0x8e5bc0,秩= 0x2854d00)失败 MPI_Comm_rank(64).:无效的通信器 – Mikhail 2011-04-23 09:41:00

+0

好的,所以我把它设置为“mpiC++。mpich2”而不是“mpiC++”时使用g ++。 – Mikhail 2011-04-23 21:32:48

0

你可以尝试编译使用了openmpi使文件在/ src目录/ MAKE 化妆了openmpi

在我的情况

,这个选项是成功