当我仅使用
编译脚本时#include <mpi.h>
它告诉我没有这样的文件或目录。 但是当我将mpi.h的路径包括在内时
#include "/usr/include/mpi/mpi.h"
(路径正确)它返回:
In file included from /usr/include/mpi/mpi.h:2087:0,
from lbm.cc:7:
/usr/include/mpi/openmpi/ompi/mpi/cxx/mpicxx.h:35:17: fatal error: mpi.h: No such file or directory
#include "mpi.h"
^
compilation terminated.
任何人都知道如何解决这个问题?
答案 0 :(得分:30)
问题几乎可以肯定是你没有使用MPI编译器包装器。无论何时编译MPI程序,都应该使用MPI包装器:
mpicc
mpiCC
,mpicxx
,mpic++
mpifort
,mpif77
,mpif90
这些包装器为您确保在编译程序时确保包含所有适当的编译器标志,库,包含目录,库目录等,从而完成所有脏工作。
答案 1 :(得分:7)
在我的系统上,我只是错过了Linux软件包。
sudo apt install libopenmpi-dev
pip install mpi4py
(使用它的一些例子,这是一个很好的即时测试,看它是否成功)
Succeded。
答案 2 :(得分:3)
Debian似乎包含以下内容:
我将为mpic等测试每个的符号链接,看看是否有助于启用HDF5-openmpi等找到mpi.h。
拿回来Debian包含通过他们的替代系统的符号链接,它仍然找不到HDF5 openmpi包和H5public.h头中引用的mpi.h之间的正确路径。
答案 3 :(得分:3)
如上所述,包含
/usr/lib/openmpi/include
包含路径中的负责处理(在我的情况下)
答案 4 :(得分:1)
在 Ubuntu 18.04 上我必须安装:
sudo apt install lam4-dev
答案 5 :(得分:0)
您可以执行:
$ mpicc -showme
结果:
gcc -I/Users/<USER_NAME>/openmpi-2.0.1/include -L/Users/<USER_NAME>/openmpi-2.0.1/lib -lmp
此命令显示编译mpicc
所需的库示例:
$ mpicc -g -I/Users/<USER_NAME>/openmpi-2.0.1/include -o [nameExec] [objetcs.o...] [program.c] -lm
$ mpicc -g -I/Users/<USER_NAME>/openmpi-2.0.1/include -o example file_object.o my_program.c otherlib.o -lm
此命令在您的程序中生成可执行文件,您可以执行:
$ ./example
答案 6 :(得分:0)
在我的系统Ubuntu 16.04上。我安装了:
sudo apt install libopenmpi-dev
在我使用mpiCC进行编译并且可以正常工作之后
答案 7 :(得分:0)
在Fedora上:
dnf install openmpi-devel