1

我正在寻找一种方法来找到矩阵的伪逆,以便可以在 GPU 上完成。SVD/QR 难以并行化且不受 MATLAB 的 GPU 支持,但似乎 LU 虽然可以并行运行,但 MATLAB 的 GPU 也不支持。我比较了性能,它似乎比在单核 CPU 上运行要慢。

我正在寻找可以使用的伪逆(甚至是方阵的正则逆)。根据 Matlab,使用 mldivide () 执行适用于 GPU 的高斯消除。

我尝试使用 A\I,但不幸的是它不能在 GPU 上高效运行。

有没有人可以指导我为并行 LU 或高斯消除优化代码?

我听说过 MAGMA 包,但安装和编译似乎需要做很多工作,我真的需要这个简单的东西。

也欢迎使用 C++ 代码。

谢谢,吉尔

4

2 回答 2

5

在 MATLAB R2013a 中,LU、QR 和 SVD 都通过 gpuArray 在 gpu 上得到支持。这里有一个支持的函数列表:http: //www.mathworks.co.uk/help/distcomp/using-gpuarray.html#bsloua3-1。gpuArray 的线性代数函数都是使用 MAGMA 实现的。

A\b可以在 GPU 上高效运行,请参阅此示例: http: //www.mathworks.co.uk/help/distcomp/examples/benchmarking-ab-on-the-gpu.html。随着问题规模的增加,您可以期望一个相当强大的 GPU(例如 Tesla)的运行速度比 CPU 快 5 倍。

于 2013-06-24T07:22:20.943 回答
0

这篇文章MATRIX INVERSION SPEED UP WITH CUDA可能会有所帮助:

摘要 在这个项目中,开发了几种数学算法来获得矩阵求逆方法——结合了 CUDA 的并行架构和 MATLAB——这实际上比 MATLAB 内置的逆矩阵函数更快。这种矩阵反演方法旨在用于图像重建,作为具有可比质量的迭代方法的更快替代方案。本项目开发的算法有 Gauss-Jordan 消元法、Cholesky 分解法、高斯消元法和矩阵乘法。

于 2013-06-22T13:06:03.537 回答