cuda标头包含失败

时间:2012-08-22 11:20:18

标签: c++ cuda compiler-errors

我想为使用MPI用C ++编写的其他项目构建一个cuda插件。 我遇到以下情况:

  • startingpoint.cpp是一个c ++文件,包括cudaintegrator.h和 包括datastructure.h
  • cudaintegrator.h是a的头文件 cuda文件包括datastructure.h
  • 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 ++的工作目录在某种程度上是不同的(?),甚至两者都是从trunk目录运行的。 当我将include更改为../../folder4/folder5/datastructure.h时,找到了文件本身,但后续包含失败的原因相同。我无法更改所有后续文件中的包含,因为在这种情况下mpic++无法找到它们。 有没有人建议我应该如何正确地包含这种情况下的文件,或者如何指示nvcc查找包含的文件?

1 个答案:

答案 0 :(得分:3)

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