3

有谁知道一个库或openCL代码示例,它可以解决Ax = B,其中A大而稀疏?我不想计算 A 的倒数,因为它会非常大且密集。A 矩阵 > 90% 稀疏,仅计算 x 可能需要更少的内存和计算密集型。

以下帖子将对 CPU 有所帮助,看起来是一个不错的选择,但我确实需要为该应用程序加速 GPU。

Ax=b 线性代数系统的 C++ 内存高效解决方案

4

3 回答 3

3

您正在寻找的是稀疏线性系统求解器。对于 OpenCL,请查看 ViennaCL: http: //viennacl.sourceforge.net/ 它具有共轭梯度、稳定双共轭梯度、广义最小残差求解器。

但是,如果您想有效地解决它,您需要一种多重网格方法。看看: http: //www.paralution.com/

PARALUTION 是一个库,使您能够在多核/多核 CPU 和 GPU 设备上执行各种稀疏迭代求解器和预处理器。

于 2013-09-24T17:30:46.130 回答
2

还有SpeedIT OpenCL

此版本的 SpeedIT 利用 OpenCL 框架的强大功能,允许使用合适 GPU 的计算能力。SpeedIT OpenCL 库为稀疏线性方程组提供了一组加速求解器和函数,这些方程组是:

  • 预处理共轭梯度求解器

    • 预条件稳定双共轭梯度求解器

    • 加速稀疏矩阵向量乘法

    • 预处理器:

    ◦ 雅可比对角线

    ◦ 具有范数 l1、l2 和 l∞ 的行缩放</p>

    ◦ ILU0 – 填充为 0 的不完整 LU

于 2014-08-15T10:54:30.560 回答
1

您可以使用Sequator 求解AX=B 形式的线性联立方程。您可以根据硬件要求使用 OpenCL 功能或多线程 CPU 功能。您还可以在代入解决方案后分析解决方案以了解方程式中的错误。

于 2014-04-27T08:18:23.697 回答