【问题标题】:C++ container and openCLC++ 容器和 openCL
【发布时间】:2012-08-09 12:13:41
【问题描述】:

我正在研究一些广泛使用 boost::multi_array<double> 的 C++ 代码。

下一步是移植代码以使用 openCL。由于我对 openCL 还很陌生,所以我不知道应该如何处理 multi_array。我应该将其重写为nested-openCL-vector 还是nested-c-array

你会怎么做?

【问题讨论】:

  • 可能取决于你要用它做什么
  • 我想要一些固定大小的数组放入 gpu 的内存中,让卡进行一些计算。
  • 你的 boost::mult_array 包含什么样的数据?尺寸是多少?

标签: c++ arrays containers opencl


【解决方案1】:

OpenCL 已经存在类似 boost 的库,您可能需要查看来自 GPU 供应商的以下库

来自 NVIDIA 的 Thurst:Thrust 是一个功能强大的并行算法和数据结构库。 Thrust 为 GPU 编程提供了一个灵活的高级接口,极大地提高了开发人员的工作效率。使用 Thrust,C++ 开发人员只需编写几行代码即可执行 GPU 加速的排序、扫描、转换和归约操作,其速度比最新的多核 CPU 快几个数量级。例如,thrust::sort 算法的排序性能比 STL 和 TBB 快 5 到 100 倍。

AMD 提供的数学库是包含 FFT 和 BLAS 函数的软件库,这些函数用 OpenCL 编写,旨在在 AMD GPU 上运行以了解更多信息,请参见此处: http://developer.amd.com/libraries/appmathlibs/Pages/default.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2014-03-22
    • 2014-06-15
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多