有没有人知道openCL代码的库或示例,它将解决Ax = B,其中A很大且稀疏?我不想计算A的倒数,因为它会非常大而且密集。 A矩阵稀疏度> 90%并且仅计算x可能远远少于存储器和计算密集型。
以下文章将帮助我了解CPU并且看起来是一个不错的选择,但我确实需要为此应用程序加速GPU。
C++ Memory Efficient Solution for Ax=b Linear Algebra System
答案 0 :(得分:3)
您正在寻找的是稀疏线性系统求解器。对于OpenCL,请查看ViennaCL:http://viennacl.sourceforge.net/ 它具有共轭梯度,稳定的双共轭梯度,广义最小残差解算器。
但是如果你想有效地解决它,你需要一个多重网格方法。看看:http://www.paralution.com/
PARALUTION是一个库,它使您能够在多核/多核CPU和GPU设备上执行各种稀疏迭代求解器和预处理器。
答案 1 :(得分:2)
此版本的SpeedIT利用OpenCL框架的强大功能,允许使用合适GPU的计算能力。 SpeedIT OpenCL库为稀疏线性系统提供了一组加速求解器和函数 方程式:
预处理共轭梯度求解器
•预处理的稳定双共轭梯度求解器
•加速稀疏矩阵 - 向量乘法
•预处理器:
◦雅可比对角线
◦使用规范l1,l2和l∞
进行行缩放◦ILU0 - 不完整LU,0填充
答案 2 :(得分:0)
您可以使用Sequalator求解AX = B形式的线性联立方程。 您可以根据硬件要求使用OpenCL功能或多线程CPU功能。 您还可以分析解决方案,以便在替换解决方案后了解方程式中的错误。