我想为另一个使用 MPI 用 C++ 编写的项目构建一个 cuda 插件。我遇到了以下情况:
- startpoint.cpp 是一个 c++ 文件,包括 cudaintegrator.h 和 datastructure.h
- cudaintegrator.h 是包含 datastructure.h 的 cuda 文件的头文件
- cudaintegrator.cpp 是 cudaintegrator.h 的实现
- datastructure.h 是指定一些数据结构的头文件
这些文件的组织方式如下:
/trunk/
/src
/folder1
/folder2
/startingpoint.cpp
/folder3
/cudaintegrator.h
/cudaintegrator.cpp
/folder4
/folder5
/datastructure.h
当我nvcc
使用以下命令从我的主干目录运行时:
/usr/local/cuda/bin/nvcc -c -o src/folder1/folder3/cudaintegrator.o src/folder1/folder3/cudaintegrator.cu
找不到包含的文件`#include“folder4/folder5/datastructure.h”:
src/folder1/folder2/cudaintegrator.h:12:33: fatal error: folder4/folder5/datastructure.h: No such file or directory
当我运行使用相同包含mpic++
的编译时,找到了。startingpoint.cpp
datastructure.h
我怀疑 nvcc 和 mpic++ 的工作目录有些不同(?),即使两者都是从主干目录运行的。当我将包含更改为../../folder4/folder5/datastructure.h
文件本身时,找到了,但随后的包含因同样的原因而失败。mpic++
我无法更改所有后续文件中的包含,因为在这种情况下无法找到它们。有没有人建议我应该如何在这种情况下正确包含文件,或者如何指示nvcc
找到包含的文件?