【问题标题】:CUDA and STL vectorCUDA 和 STL 向量
【发布时间】:2010-08-16 21:43:11
【问题描述】:

刚刚了解到许多 cpp 功能(包括 stl 矢量类)在 cu 文件中不起作用。即使在宿主代码中使用它们。

由于我必须使用使用 STL 的 C++ 类,我无法编译调用内核的 CU 文件。 (我在 CU 文件中没有使用任何 STL 功能,但我认为 include 是问题所在。)

我尝试通过使用 cmake 来构建它

cuda_add_executable(
Blah
Blah.cu
BlahKernel.cu
HostCodeWithVector.cpp
)

这显然行不通。现在出现的问题是,是否可以使用 gcc 而不是 nvcc 构建 HostCodeWithVector.cpp 并以某种方式链接它..?

【问题讨论】:

  • 是的,我知道推力,但我不想重写现有代码。

标签: stl cuda


【解决方案1】:

因为__host__ 正是在您的 CPU 上运行的,您可以使用任何编译器(MSVC、gcc)编译这部分,然后与 nvcc 结果链接。所以你应该只在 CU 文件中保留 GPU 互操作,其他所有内容都放入 CPP。

【讨论】:

  • 好吧..我怎么知道这个cmake..?
  • @Nils 阅读 gcc 和 nvcc 的文档。让他们产生目标文件。然后从 gcc 中获取链接器并将它们链接在一起。
  • 感谢您的回答,问题是尝试构建 64 位(仍然!)不适用于 Mac 上的 CUDA 而不是 STL。我认为我做得对。 “所有非 CUDA C 文件都使用 CMAKE 指定的标准构建规则进行编译,并且 cuda 文件使用 nvcc 和主机编译器编译为目标文件。”说cmake.org/cmake/help/cmake-2-8-docs.html
猜你喜欢
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多