|
5#
楼主 |
发表于 2019-6-10 20:07:04
|
只看该作者
感谢回复。
之前对特征值问题完全不了解,又因为用的是windows,只是对MKL熟悉点,所以一直想在MKL的框架里解决问题,同时也是想利用MKL中高度硬件优化的BLAS、SPBLAS和LAPCK库。
最近折腾了一段时间后,也了解到了ARPACK,对于非对称、非Hermitian特征值问题总结如下,以供后人学习参考:
1. 中小型特征值问题
这类问题可以采用QR迭代法直接求解所有特征值和特征向量,只支持稠密矩阵,主要是LAPACK中的相应subroutine用的就是这类方法。
2. 大型特征值问题的部分特征值问题。
2.1 ARPACK
ARPACK采用Krylov 子空间方法和implicit restart 技术,大概在1996年前后开发完成。
2.2 Feast
Feast借鉴量子力学中的围道积分法(contour integration),对由围道(contour)在复平面中所围的区域内进行特征值搜索,可以同时设置多个围道,并行效果较好。Feast 2.0只支持对称和Hermitian问题,Feast 3.0 支持所有矩阵问题(对称,非对称,Hermitian,非Hermitian , dense , banded, sparse)。Feas 3.0的开发人员中有intel的人,所以很多BLAS和LAPACK库默认是从MKL中调用的,稀疏特征值问题还用到了MKL中的PARDISO模块,因此编译的时候最好用Intel Fortran 编译器,大概语法为:
ifort /Qmkl /fpp /O2 /c /I. *.f90
具体理论可参考Feast 2.0【1】和3.0【2】的原始论文:
【1】 Eric Polizzi,2009,A Density Matrix-based Algorithm for Solving Eigenvalue Problems
【2】JAMES KESTYNy, ERIC POLIZZIz, AND PING TAK PETER TANG,2016,FEAST EIGENSOLVER FOR NON-HERMITIAN PROBLEMS
|
|