C++ VexCL、推力和增压之间的差异。计算
对这些库的理解很粗略,它们看起来非常相似。我知道VexCL和Boost.Compute使用OpenCl作为后端(尽管v1.0版本VexCL也支持CUDA作为后端),而推力使用CUDA。除了不同的后端,它们之间的区别是什么 具体来说,他们解决了什么问题空间,为什么我要使用一个而不是另一个 此外,在推力常见问题解答中指出C++ VexCL、推力和增压之间的差异。计算,c++,thrust,gpu,boost-compute,vexcl,C++,Thrust,Gpu,Boost Compute,Vexcl,对这些库的理解很粗略,它们看起来非常相似。我知道VexCL和Boost.Compute使用OpenCl作为后端(尽管v1.0版本VexCL也支持CUDA作为后端),而推力使用CUDA。除了不同的后端,它们之间的区别是什么 具体来说,他们解决了什么问题空间,为什么我要使用一个而不是另一个 此外,在推力常见问题解答中指出 OpenCL支持的主要障碍是缺少OpenCL编译器和运行时,支持C++模板 如果是这样的话,VexCL和Boost.Compute怎么可能存在呢。我是的开发者,但我真的很喜欢,这
OpenCL支持的主要障碍是缺少OpenCL编译器和运行时,支持C++模板
如果是这样的话,VexCL和Boost.Compute怎么可能存在呢。我是的开发者,但我真的很喜欢,这本书的作者,在同一主题上所说的话。简而言之,从用户的角度来看,Boost.Compute、AMD和微软都实现了类似STL的API,而VexCL是一个基于表达式模板的库,在本质上更接近于STL。我相信类似STL的库之间的主要区别在于它们的可移植性:- Compute提供自己的(基于Boost.Proto),并允许通过和宏与用户定义的结构交互
- VexCL提供了类似DSL的线性代数(也基于Boost.Proto),以及OpenCL函数(甚至包括Boost.Phoenix lambdas)(有限制)
- 我相信AMD的Bolt确实通过其扩展魔法支持用户定义的函子
已经说过,基于CUDA的库(可能是C++ + AMP)有明显的优点,编译时编译器(你能说吗?),所以与用户代码的集成可以更紧密。< / P>不要忘记C++ +AMP!您可能需要补充的是,虽然基于OpenCL的库不支持函数对象(和lambda)作为内核,但那些不基于OpenCL的库通常都支持。非常好地总结了这些库中的功能,以模拟函数对象支持!干得好!C++中的OpenC++扩展魔术,你提到的AMD的螺栓只是c++ AMP。他们支持。这似乎只是一个模板函数,但他们使用模板在OpenCL字符串内。那是标准的OpenCL还是AMD专用的?我不知道你能做到!是的,我可能错过了一点。这是分机。这是一个例子。