0

我想为另一个使用 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.cppdatastructure.h

我怀疑 nvcc 和 mpic++ 的工作目录有些不同(?),即使两者都是从主干目录运行的。当我将包含更改为../../folder4/folder5/datastructure.h文件本身时,找到了,但随后的包含因同样的原因而失败。mpic++我无法更改所有后续文件中的包含,因为在这种情况下无法找到它们。有没有人建议我应该如何在这种情况下正确包含文件,或者如何指示nvcc找到包含的文件?

4

1 回答 1

3

为 nvcc 调用提供包含路径 ( -I) 就足够了(如果没有,它仅使用相对包含路径,这就是添加../..单个包含的原因)。

于 2012-08-22T11:24:18.023 回答