gpt4 book ai didi

matrix - Intel Extended Eigensolver(用于稀疏矩阵)极慢

转载 作者:行者123 更新时间:2023-12-05 07:35:07 71 4
gpt4 key购买 nike

我试图找到相当大的稀疏矩阵的特征值,并且我安装了英特尔 MKL 库。我正在用 Fortran 90 编写。因为我的矩阵是稀疏的,所以我希望使用 Extended Eigensolver查找特征值的例程。但是我发现与密集的 MKL 例程相比它非常慢。我编写了一个代码来生成各种大小的矩阵 2**N x 2**N 并使用以下例程找到不同的特征值:

dsyev()
dsyevr()
dsyevd()
dsyev_f95()
dsyevr_f95()
dsyevd_f95()
dfeast_scsrev()

最后一个是扩展特征求解程序。我不认为 LAPACK 例程的 f77 和 f95 版本之间有任何区别,除了据我所知,dsyevr_f95() 没有 JOBZ 参数,因此我不能告诉它只计算特征值(而不是特征向量)。据我所知,我也不能告诉 dfeast_scsrev() 例程只计算特征值。

我为各种矩阵大小对这些例程进行计时,我发现 dfeast_scsrev()dsyevr_f95() 花费大约 100 倍的时间,这已经是原来的 10 倍比其他的慢,因为它也在计算特征向量。这对我来说似乎很奇怪,我想知道我是否做错了什么。结果如下所示:

time to build H就是构造矩阵的时间

矩阵的密度是非零元素的分数

time to convert to sparse 是从密集格式转换为 CSR 格式的时间(可忽略不计)。

表中所列时间为调用相关LAPACK/MKL例程的子程序的调用次数。时间是时钟时间,不是挂钟时间

 ###############################################################################

N= 4
time to build H: 0
dimensions of matrix: 16 x 16

density of matrix: 0.140625000000000
time to convert to sparse: 0
time to run dfeast_scsrev: 1130
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 150 10 30
f95 versions: 30 30 20
sparse version : 1180

###############################################################################

N= 5
time to build H: 0
dimensions of matrix: 32 x 32

density of matrix: 0.109375000000000
time to convert to sparse: 0
time to run dfeast_scsrev: 50
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 20 30 40
f95 versions: 40 30 130
sparse version : 90

###############################################################################

N= 6
time to build H: 0
dimensions of matrix: 64 x 64

density of matrix: 6.250000000000000E-002
time to convert to sparse: 0
time to run dfeast_scsrev: 170
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 20 90 110
f95 versions: 30 60 90
sparse version : 340

###############################################################################

N= 7
time to build H: 0
dimensions of matrix: 128 x 128

density of matrix: 3.515625000000000E-002
time to convert to sparse: 0
time to run dfeast_scsrev: 520
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 180 140 140
f95 versions: 190 270 140
sparse version : 740

###############################################################################

N= 8
time to build H: 10
dimensions of matrix: 256 x 256

density of matrix: 1.739501953125000E-002
time to convert to sparse: 10
time to run dfeast_scsrev: 3750
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 350 270 520
f95 versions: 420 790 410
sparse version : 4240

###############################################################################

N= 9
time to build H: 0
dimensions of matrix: 512 x 512

density of matrix: 1.074218750000000E-002
time to convert to sparse: 10
time to run dfeast_scsrev: 33250
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 570 1050 820
f95 versions: 1060 2880 500
sparse version : 33670

###############################################################################

N= 10
time to build H: 10
dimensions of matrix: 1024 x 1024

density of matrix: 5.859375000000000E-003
time to convert to sparse: 80
time to run dfeast_scsrev: 222820
dsyev dsyevr dsyevd
----------------------------------------------------
f77 versions: 1870 2130 2230
f95 versions: 2290 8110 2010
sparse version : 223570

我的代码可以查看here

我已确认所有例程都产生相同的特征值。

所以我的问题是,这是正确的吗?为什么稀疏特征求解器这么慢?我做错了什么或者我可以做些什么来加快速度吗?请注意,这里的所有内容都是按顺序运行的,没有并行化。最后,任何人都可以推荐一个替代的稀疏特征求解器吗?考虑到这些矩阵的稀疏性(并且我想达到 N=16 或更多),我认为稀疏求解器比密集的 LAPACK 求解器更有效。

最佳答案

我没有使用过您正在使用的库的经验,因此无法对其性能发表评论。如果要求代码使用 Fortran 语言,我使用 JADAMILU 在对称稀疏矩阵上取得了很好的结果。 ,它执行自动预处理并具有相当简单的文档(与 ARPACK 等一些老派的东西相比)。如果您可以摆脱使用 Fortran,我建议您 PySparse .

编辑:查看您的测试数据后,我对您的结果并不太惊讶。使用稀疏求解器会产生显着的性能开销,尤其是对于您使用的相对较小的数组。您通常会从内存中获益,因为对于大型稀疏数组,稀疏存储方法会显着压缩您的数据。

关于matrix - Intel Extended Eigensolver(用于稀疏矩阵)极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710694/

71 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com