我正在尝试通过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.hin ../../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