【发布时间】:2014-01-10 16:10:21
【问题描述】:
我有一个问题需要我对许多 (~4k) 小 (~3x3) 方 Hermitian 矩阵进行特征分解和矩阵乘法。特别是,我需要每个工作项执行一个这样的矩阵的特征分解,然后执行两个矩阵乘法。因此,每个线程必须做的工作相当少,而且整个工作应该是高度可并行化的。
不幸的是,似乎所有可用的 OpenCL LAPACK 都用于将大型矩阵上的运算委托给 GPU,而不是用于在 OpenCL 内核中进行较小的线性代数运算。由于我不想自己在 OpenCL 中为任意大小的矩阵实现矩阵乘法和eigendecomposition,所以我希望这里有人可能知道适合这项工作的库?
我知道自从矩阵类型is reserved 以来,OpenCL 可能会在某个时候获得内置矩阵运算,但现在这并没有多大用处。 2011 年有一个类似的问题here,但它几乎只是说自己动手,所以我希望从那时起情况有所改善。
【问题讨论】:
-
几千个矩阵乘法算不了什么,可能不值得将数据传输到 GPU 并返回。我们谈论的是少于一百万次 FLOP,您的 CPU 可以在将矩阵和结果推送到 PCIe 所需的时间内做到这一点。我对特征分解了解不多,但我怀疑它需要足够长的时间才能值得 GPGPU-ing。
-
这种特殊工作负载的优点是需要很少的 GPU 输入(从不传输完整的矩阵)和很少的输出(执行缩减步骤,只返回几个数字) .对于某些应用程序,矩阵的数量可能会增加到 30k,因此我认为它应该非常适合 GPU。
-
这有点改变。如果它们已经在 GPU 上,那么将它们返回 以进行小型廉价计算并没有多大意义。那就去吧:-)
-
不,这正是我的想法。不幸的是,OpenCL 并没有让我在 GPU 上进行矩阵运算变得容易。
-
你有任何示例代码,即使只是在 C 中?这将使您的问题更加具体,甚至可能有助于从许多 Stack OpenCL 从业者那里产生详细的建议。
标签: matrix opencl gpgpu linear-algebra lapack