【发布时间】:2014-07-26 22:51:07
【问题描述】:
我很难理解在 CUDA 程序中处理不同文件的方式:
我正在尝试重组我已经研究了一段时间的 CUDA 程序。到目前为止,它或多或少是一个单文件程序。我有 1 个 .cu 文件,其中包含所有 CUDA 代码以及主要功能。我有几个包含在内的头文件,但它们只包含非 CUDA 函数。程序变得越来越大,越来越混乱,我想将内核构建成不同的文件以提高可读性。
最初我认为这样做的方法是拥有 .cuh 文件。我没有让它工作,所以我试着了解this,它建议一个.h 文件和一个.cu 文件。但是,在其中包含其他 .cu 文件后,该程序将不再构建。它通常要么无法识别诸如“__global__”之类的 CUDA 关键字,要么会在外部包含中抛出错误,这似乎不相关。
然而,我注意到它是在我在 .h 文件中定义内核时构建的。我觉得这不是一个好主意,但不知道它有什么问题。 困扰我的是,根据我的理解,.h 文件甚至不应该由 nvcc 编译,那么它仍然如何工作? 我很难理解最好的方法是什么。
我正在使用 Visual Studio 2012 和 CUDA 5.5
【问题讨论】:
-
“最初我认为这样做的方法是拥有 .cuh 文件。我没有让它工作......” New Item -> NVIDIA CUDA
-> Code -> CUDA C/C++ Header ? -
是的,这基本上就是我所做的:添加一个新的 .cuh,将其包含在我的主文件 (a .cu) 中并期望它能够工作。但事实并非如此。 .h 文件也是如此,并且有效。
-
哦,cmon,您只是将措辞从“我没有让它起作用”改为“期望它起作用但它没有”:D 说真的,怎么会有人知道你的问题是什么用你的方法遇到过吗?
标签: cuda