【问题标题】:Do OpenCL vector types use SIMDOpenCL 向量类型是否使用 SIMD
【发布时间】:2011-11-06 05:51:40
【问题描述】:

我目前在我的 OpenCL 内核中处理了大量的浮点数,我想知道我是否将这个数组分开并使用 OpenCL 向量类型数组来代替,如果它会加速这个过程。基本上,如果我有一个包含 4,800 个浮点数的数组,我会将它分成一个包含 300 个 float16 向量的数组。这会利用 SIMD 吗?

【问题讨论】:

  • OpenCL 应该已经利用了底层硬件的 SIMD 特性,否则它对于 GPU 编程将毫无用处。我不确定它在 CPU 上的作用,尽管 CPU 并不是 OpenCL 发挥其优势的完美领域。

标签: math vector floating-point opencl simd


【解决方案1】:

英特尔实际上描述了他们的 OpenCL SDK 的功能:请参阅 Writing Optimal OpenCL™ Code with Intel® OpenCL SDK。您可能想检查一下,作为基准测试的补充。有趣的部分从第 2.3 章开始。

回答您的问题:是的,它将利用 SIMD。但是要“通过使用向量数据类型最大限度地利用 CPU 向量单元”,您真的应该阅读该文档。

【讨论】:

    【解决方案2】:

    可能会,也可能不会。它取决于 OpenCL 的实现,以及您的程序在其上执行的硬件。

    查看它是否提供改进的唯一方法是在感兴趣的平台和实现上进行基准测试 - 针对向量大小的范围(例如比较 1(标量)、2、4、8 和 16)。

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 2012-04-05
      • 2020-02-19
      • 2018-09-07
      • 2023-03-19
      • 2015-10-23
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      相关资源
      最近更新 更多