我很想知道是否已经将任何常用算法(排序,搜索,图形等)移植到OpenCL(或任何GPU语言),以及性能如何与CPU执行的相同算法进行比较.我对结果(数字)特别感兴趣.
谢谢!
GPU是高度专业化的硬件,旨在很好地执行一小组任务并实现高度并行化.这基本上是算术运算(特别是单精度浮点运算,尽管较新的GPU在双精度下表现相当不错).因此,它们仅适用于特定算法.我不确定排序是否符合该类别(至少在一般情况下).
更常见的例子是金融工具的定价,大量的矩阵数学甚至是破坏加密(通过暴力破解).话虽这么说,我确实发现使用混合算法进行快速并行GPU排序.
另一个常见的例子是在Nvidia GPU上运行SETI @ HOME,但它将苹果与橙子进行比较.与通常使用的CPU相比,GPU的工作单元是不同的(并且非常有限).
看看推力:
Thrust是一个CUDA并行算法库,其接口类似于C++标准模板库(STL).Thrust为GPU编程提供了灵活的高级接口,极大地提高了开发人员的工作效率.
对于GPGPU所引用的任何性能数据,请谨慎.很多人喜欢发布真正令人印象深刻的数字,这些数字没有考虑将输入数据从CPU输出到GPU和输出数据所需的传输时间,这两者都是PCIe瓶颈.