gpt4 book ai didi

matrix - 在 OpenCL 中并行执行许多小矩阵运算

转载 作者:行者123 更新时间:2023-12-02 04:39:56 24 4
gpt4 key购买 nike

我有一个问题,需要我对许多 (~4k) 小 (~3x3) 方形厄米矩阵进行特征分解和矩阵乘法。特别是,我需要每个工作项执行一个这样的矩阵的特征分解,然后执行两个矩阵乘法。因此,每个线程必须做的工作相当少,而且整个工作应该是高度可并行的。

不幸的是,似乎所有可用的 OpenCL LAPACK 都用于将大型矩阵上的操作委托(delegate)给 GPU,而不是用于在 OpenCL 内核中执行较小的线性代数运算。因为我不想实现矩阵乘法和 eigendecomposition对于我自己在 OpenCL 中任意大小的矩阵,我希望这里有人可能知道适合这项工作的库?

我知道自从矩阵类型 is reserved 以来,OpenCL 可能会在某个时候获得内置矩阵运算。 ,但现在这并没有多大用处。还有一个类似的问题here从 2011 年开始,但它几乎只是说要自己动手,所以我希望从那时起情况有所改善。

最佳答案

总的来说,我使用 LAPACK、fftw、cuFFT 等库的经验是,当您想解决许多像这样非常小的问题时,最好自己编写以提高性能。这些库通常是为通用性而编写的,因此您通常可以在特定的小问题上击败它们的性能,特别是如果您可以使用特定问题的独特属性。

我知道您不想听到“自己动手”,但对于此类问题,IMO 确实是最好的做法。您可能找到一个库来执行此操作,但考虑到您真正(为了性能)想要的代码不会泛化,我怀疑它是否存在。您将专门寻找代码来查找 3x3 矩阵的特征值。这与其说是一个库,不如说是一个具有合适许可证的随机代码片段,您可以操纵它来利用您的特定问题。

在这种特定情况下,您可以使用特征多项式通过教科书方法求出 3x3 矩阵的特征值。请记住,三次方程有一个相对简单的封闭形式解:http://en.wikipedia.org/wiki/Cubic_function#General_formula_for_roots .

虽然我认为这种方法很可能比迭代方法快得多,但验证性能是否是一个问题是明智的。

关于matrix - 在 OpenCL 中并行执行许多小矩阵运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com