c++ - 在 cuda 设备代码中使用 boost 等库

标签 c++ c boost cuda

我现在正在学习cuda,我想知道是否可以在cuda设备代码中使用来自不同库和api的函数,例如boost。 注意:我尝试使用 std::cout 但不起作用,在将代码生成更改为compute_20,sm_20 后,printf 开始工作。我正在使用 Visual Studio 2010。Cuda 5.0。 GPU Nvidia GTX 570。已安装 NSLight。

最佳答案

Here's一个答案。这是 CUDA documentation关于语言支持。 Boost 并不能保证做到这一点。

由于使用 CUDA 的目的是 boost 代码中的内核,因此您通常会希望限制所使用的语言复杂性,因为这会增加开销。这意味着您通常会非常接近纯 C,如果确实方便的话,只需少量 C++。

例如 Boost 中的构造可能会产生大量汇编代码(C++ 通常因此而受到批评,这也是不在实时软件中使用某些构造的原因)。这对于大多数应用程序来说都很好,但对于您想要在 GPU 上运行的内核来说则不然,因为 GPU 上的每条指令都很重要。

对于 CUDA(或 OpenCL ),人们通常会编写处理数组中数据的密集算法。例如特殊图像处理。您仅使用这些技术来执行应用程序的计算密集型任务。然后,您有一个与用户/网络/数据库交互的“常规”程序,该程序创建这些 CUDA 任务(即选择数据和参数)并启动它们。 Here are CUDA samples.

关于c++ - 在 cuda 设备代码中使用 boost 等库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628406/

相关文章:

c - 读取字符时 Switch 语句无法按预期工作

c - 是否可以使用函数获取数组的长度?

C语言-Windows已触发断点

c++ - boost 日期时间转换错误

C++ char** -> vector<string> -> string -> char** 解析问题

c++ - 如果存在哈希,加速 c++ unordered_map 插入?

c++ - 在尊重 BOM 的同时匹配 Unicode 代码点的约定?

c++ - 导致解析问题的 boost 语义操作

c++ - 为什么 pre_c_init 会访问定义的程序段之外的内存?

c++ - 更改方法内的参数