【问题标题】:Assembling a CUDA Project组装一个 CUDA 项目
【发布时间】:2011-09-06 05:33:12
【问题描述】:

我一直在浏览该站点以查找有关大型 CUDA 项目的问题,并且我找到了一些很好的答复,但无论如何我还有一些疑问。

我的程序,目前(还没有完成),输出一些数组,然后输入到 Thrust 库函数。

所以我的主要疑问是:

1-鉴于我使用的是 CUDA C,我将推力函数声明为 extern "C"。我不确定在头文件中声明这些函数的正确方法,经过一番谷歌搜索后,我发现了以下代码,我想确定它是正确的:

extern "C" {
void compact(float*intxc,float*intyc,float*intzc);
void sort(float*intxc,float*intyc,float*intzc);
}

2-我在论坛上看到过一些帖子,使用“Main.cpp”作为主文件,使用“Main.cu”文件是错误的还是无所谓的?

编辑:经过一番思考(和建议),我真的认为旧问题有点乏味。

在此先感谢并感谢 talonmies 的建议

【问题讨论】:

  • 这是四个不同的问题,其中三个非常模糊,无法合理回答。我相信你可以做得更好。
  • 我的评论的想法是鼓励您编辑原始问题以使其变得更好,而不是在 cmets 中重复......
  • 我发誓,当我写的时候,我正在考虑是否在这里编辑问题或评论..

标签: cuda extern thrust


【解决方案1】:
  1. 在最新(2.3 后)版本的 CUDA 中,无需声明您的函数 extern "C"。而且这些函数只是C函数,与CUDA无关。

  2. 您可以将 main 函数放在 .cu 文件或 .cpp 文件中。如果你做前者,它必须由nvcc编译。如果你做后者,它应该由你的 C++ 编译器编译。该文件不需要命名为“Main”。

【讨论】:

  • 感谢您的回复;)。是的,我知道该文件不需要命名为 Main,但在我的情况下,它需要是一个 .cu 文件,因为其中有 CUDA 内核调用。我也使用了 extern "C",因为我认为在同一个程序中使用 C 和 C++ 函数会给我带来麻烦,但我已经在没有 extern 的情况下进行了测试,并且它正在工作
猜你喜欢
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
相关资源
最近更新 更多