【问题标题】:Why OpenCL doesn't have matrix data type?为什么 OpenCL 没有矩阵数据类型?
【发布时间】:2014-09-21 15:06:54
【问题描述】:

考虑到 OpenCL 内核在与着色器相同的单元上执行,我认为 OpenCL 具有与 GLSL 相同的数据类型似乎是合乎逻辑的,但请看这里:http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/dataTypes.html 我没有看到矩阵类型。

这是为什么呢?

另外,这是否意味着如果我想乘以 4x4 矩阵,使用 OpenCL 时会比使用 GLSL 慢?

【问题讨论】:

  • 它具有点积功能,所以应该不会慢。
  • 虽然我不知道确切的答案,但 IMO 密集矩阵可以很容易地用一维数组表示,而稀疏矩阵在各种兼容设备上并不容易有效表示。这就是为什么没有实现特殊结构的原因。

标签: matrix types opencl


【解决方案1】:

实际上,如果您更仔细地查看您的link,则保留数据类型类别中有矩阵数据类型:floatnxm、doublenxm。因此,在标准的未来版本中很可能会实现这些类型。我不知道他们为什么还没有这样做。

此时您可以使用数组或 image2d_t 来表示矩阵。你可能想看看这个article

什么是速度。这并不一定意味着 OpenCL 更慢,但很有可能。即使您设法使用 OpenCL 为一个平台编写了完美的矩阵乘法代码,在其他一些平台上的性能也可能很差。在 OpenGL 中,制造商正在编写自己的矩阵乘法代码,这对于每个平台都应该是最佳的。

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多