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