gpt4 book ai didi

c++ - VexCL、Thrust 和 Boost.Compute 的区别

转载 作者:IT老高 更新时间:2023-10-28 14:01:59 26 4
gpt4 key购买 nike

只要粗略了解这些库,它们看起来就非常相似。我知道 VexCL 和 Boost.Compute 使用 OpenCl 作为后端(尽管 v1.0 版本的 VexCL 也支持 CUDA 作为后端),而 Thrust 使用 CUDA。除了不同的后端,它们之间有什么区别。

具体来说,他们解决了哪些问题空间以及我为什么要使用一个而不是另一个。

此外,在推力常见问题解答中指出

The primary barrier to OpenCL support is the lack of an OpenCL compiler and runtime with support for C++ templates

如果是这样,VexCL和Boost.Compute怎么可能存在。

最佳答案

我是 VexCL 的开发者, 但我真的很喜欢 Kyle Lutz , 作者 Boost.Compute ,不得不在 Boost mailing list 上就同一主题说.总之,从用户的角度来看Thrust , Boost.Compute, AMD 的 Bolt可能是微软的C++ AMP都实现了类似 STL 的 API,而 VexCL 是一个基于表达式模板的库,更接近 Eigen在自然界。我相信类 STL 库之间的主要区别在于它们的可移植性:

  1. Thrust 仅支持 NVIDIA GPU,但也可以通过其 OpenMP 和 TBB 后端在 CPU 上工作。
  2. Bolt 使用 AMD 对 OpenCL 的扩展,这些扩展仅在 AMD GPU 上可用。它还提供 Microsoft C++ AMP 和 Intel TBB 后端。
  3. 唯一支持 Microsoft C++ AMP 的编译器是 Microsoft Visual C++(虽然 Bringing C++AMP Beyond Windows 的工作正在进行中)。
  4. Boost.Compute 似乎是其中最便携的解决方案,因为它基于标准 OpenCL。

同样,所有这些库都在尝试实现类似 STL 的接口(interface),因此它们具有非常广泛的适用性。 VexCL 的开发考虑了科学计算。如果 Boost.Compute 开发得早一点,我可能会在它之上建立 VexCL :)。另一个值得一看的科学计算库是 ViennaCL ,一个免费的开源线性代数库,用于在多核架构(GPU、MIC)和多核 CPU 上进行计算。查看 [1] 以比较该领域的 VexCL、ViennaCL、CMTL4 和 Thrust。

关于引用的 Thrust 开发人员无法添加 OpenCL 后端:Thrust、VexCL 和 Boost.Compute(我不熟悉其他库的内部结构)都使用元编程技术来完成他们所做的事情。但由于 CUDA 支持 C++ 模板,因此 Thrust 开发人员的工作可能会轻松一些:他们必须编写元程序,在 C++ 编译器的帮助下生成 CUDA 程序。 VexCL 和 Boost.Compute 作者编写的元程序可以生成生成 OpenCL 源代码的程序。看看slides我试图解释 VexCL 是如何实现的。所以我同意当前 Thrust 的设计禁止他们添加 OpenCL 后端。

[1] Denis Demidov、Karsten Ahnert、Karl Rupp、Peter Gottschling、Programming CUDA and OpenCL: A Case Study Using Modern C++ Libraries , 暹罗 J. Sci。计算机,35(5),C453–C472。 (也可以使用 arXiv version)。

更新:@gnzlbg 评论说在基于 OpenCL 的库中不支持 C++ 仿函数和 lambda。事实上,OpenCL 基于 C99 并在运行时从存储在字符串中的源代码编译,因此没有简单的方法与 C++ 类进行完全交互。但公平地说,基于 OpenCL 的库确实在一定程度上支持基于用户的函数甚至 lambda。

话虽如此,基于 CUDA 的库(可能是 C++ AMP)在实际编译时编译器方面具有明显优势(您能这么说吗?),因此与用户代码的集成可以更加紧密。

关于c++ - VexCL、Thrust 和 Boost.Compute 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com