我正在尝试通过make
在示例的基本文件夹中运行来构建所有 CUDA 示例。其中一个示例需要mpi.h
,但系统没有它,这会导致错误:
make[1]: Entering directory '$HOME/cuda_samples/samples/0_Simple/simpleMPI'
/bin/mpicxx -I../../common/inc -o simpleMPI_mpi.o -c simpleMPI.cpp
simpleMPI.cpp:25:10: fatal error: mpi.h: No such file or directory
25 | #include <mpi.h>
| ^~~~~~~
compilation terminated.
make[1]: *** [Makefile:371: simpleMPI_mpi.o] Error 1
因为我没有root权限,所以我下载了一个deb文件libopenmpi-dev
包(使用apt-get download
命令)并将它解压到我的用户空间中的某个地方(使用dpkg -x
命令)。但是,正如我们所看到的,mpicxx
尝试查找mpi.h
in ../../common/inc
,这不是我libopenmpi-dev
在我的用户空间中安装的位置(直到我安装了软件包,我才注意到这一点。我的错)。所以我需要以某种方式告诉在另一个目录mpicxx
中查找。mpi.h
我知道有一个-I
选项可以告诉make
其他包含目录在哪里,但是这个选项不适用于mpicxx
. 如何将目录信息make
从命令行传递mpicxx
到我的知识范围之外。你能教我应该使用什么选项吗make
的命令行来指定使用的包含目录mpicxx
?当然,我可以手动复制已安装的libopenmpi-dev
包以../../common/inc
适应 CUDA 示例中的原始设置,但我想做一些很酷的事情并学习新的东西,所以我在这里问。提前谢谢你教我。
环境:
- 核心版本为 5.8.0 的远程 Linux。我不是超级用户。
- CUDA 版本:11.2
- CPU:英特尔酷睿 i9-10900K
- gcc 版本:(Ubuntu 10.2.0-13ubuntu1)10.2.0
- 制作版本:GNU Make 4.3,为 x86_64-pc-linux-gnu 构建
- MPI 版本:4.0.3