使用MKL+Eigen求解稀疏矩阵方程组

本文介绍了如何利用Intel MKL库结合Eigen框架,有效地求解大型稀疏矩阵方程组Ax=b。针对不同类型的矩阵,如对称正定、对称不定和非对称矩阵,提出相应的解法。通过VS工程设置和宏定义启用MKL加速,并展示12核CPU处理1500^2大小矩阵时,运算速度提升了3倍。
摘要由CSDN通过智能技术生成

 问题:求解Ax=b的解,其中,A为大型稀疏矩阵,长和宽分别为1500^2。

    一般思路:

    (1)A为对称正定矩阵,对A使用cholesky分解。

    (2)A为对称不定矩阵,使用LDL‘分解,即:

PAP'=LDL'

    其中,L为单位下三角矩阵,D由阶数为1或者2的对角块构成,P是置换矩阵。

    (3)不对称矩阵:LU分解。

    (4)长方形矩阵(长>宽):QR分解或者两边同乘以A’,构建对称矩阵,即:

A'Ax=A'b

    这里使用LU分解:

    流程:

    (1)安装MKL。


 

    (2)新建VS工程,设置mkl并行,添加Eigen引用。

 

    (3)头文件定义宏:#define EIGEN_USE_MKL_ALL 表示使用MKL加速。

 

    (4)引入头文件:

    #include <Eigen\Sparse> //稀疏矩阵

    #include <Eigen\PardisoSupport> //mkl支持

 

    (5)定义并赋值稀疏矩阵A和b。

<
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值