Armadillo eig_sym() 用于提取特征值。它是平行的吗?

计算科学 线性代数 并行计算 本征系统 特征值
2021-12-17 03:20:22

在使用 scalapack 浪费了 3 天之后,我放弃了并转向了 Armadillo,因为它在其美丽而简单的界面下使用了 lapack。

我想计算非稀疏 Hermitian 矩阵的特征值和特征向量。这很容易用 Armadillo 完成,只需 4 行代码即可eig_sym()

我的问题是:这个函数是并行的吗?我怎样才能并行化它?

如果没有,是否有任何替代方案不像 lapackand 支持并行化那么疯狂?

顺便说一句:我很高兴实现一种算法,用犰狳将矩阵拆分为子矩阵以获得特征值。任何有效但不能让我花 2 周时间来获得我的第一组特征值。

我正在使用 debian 7,并且在 repos 中提供了 Armadillo 3,以防我必须修改其中的内容(注意到这可能是阅读其他帖子的必要条件)。

如果您需要任何其他信息,请询问。提前感谢您的帮助。

1个回答

基于对 Armadillo 库文档的快速阅读和多年前使用它的经验,快速而肮脏的答案是,如果您链​​接它们,Armadillo 将使用线程并行的 BLAS 和 LAPACK 库。我认为这就是在 Armadillo 中实现共享内存并行的程度。对于分布式内存并行性,使用Elemental或 ScaLAPACK 可能会更好。量子化学界的一位熟人对 Elemental 比 ScaLAPACK 更易于使用赞不绝口。你的旅费可能会改变。