【问题标题】:cuda header inclusion failscuda 标头包含失败
【发布时间】:2012-08-22 11:20:18
【问题描述】:

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

  • startingpoint.cpp 是一个 c++ 文件,包括 cudaintegrator.h 和 包括数据结构.h
  • cudaintegrator.h 是一个头文件 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++ 的工作目录有些不同(?)即使两者都是从主干目录运行的。 当我将包含更改为../../folder4/folder5/datastructure.h 时,会找到文件本身,但随后的包含由于同样的原因而失败。我无法更改所有后续文件中的包含,因为在这种情况下mpic++ 找不到它们。 有没有人建议在这种情况下我应该如何正确包含文件,或者如何指示nvcc 找到包含的文件?

【问题讨论】:

    标签: c++ cuda compiler-errors


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,正如您所说,我错过了将-I./src 添加到我的 NVCC 编译器选项中。好尴尬……谢谢帮忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2015-09-27
    • 2018-11-06
    • 1970-01-01
    • 2012-12-07
    相关资源
    最近更新 更多