2

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

4

2 回答 2

1

Boost使用表达式模板技术不会降低性能,同时启用更简单的语法。

BlueBirdNewton是使用元编程的库,类似于Boost启用CUDA计算。

ArrayFire是另一个使用即时编译并利用底层 CUDA 语言的库。

最后,正如 Njuffa 所建议的, Thrust是一个支持 CUDA 计算的模板库(但不使用元编程,请参阅Evaluating expression contains elementwise matrix operations in Thrust)。

于 2013-07-20T12:34:12.170 回答
1

这是一个答案。这是关于语言支持的CUDA 文档。Boost肯定不会成功。

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

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

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

于 2013-07-13T09:17:47.277 回答