gpt4 book ai didi

python - 使用 Python 进行并行精确矩阵对角化

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:58 24 4
gpt4 key购买 nike

有人知道并行精确矩阵对角化(等效地,找到特征系统)的实现版本(可能使用 scipy/numpy)吗?如果有帮助的话,我的矩阵是对称且稀疏的。我不想花一天时间重新发明轮子。

编辑:

我的矩阵至少为 10,000x10,000(但最好至少大 20 倍)。目前,我只能使用 4 核 Intel 机器(具有超线程,因此每个核心 2 个进程),每个核心 3.0Ghz,具有 12GB RAM。我稍后可能可以访问 128 核节点 ~3.6Ghz/core 和 256GB RAM,因此单机/多核应该可以做到(对于我的其他并行任务,我一直在使用多处理) 。我希望算法能够很好地扩展。

我确实需要精确的对角化,因此 scipy.sparse 例程对我来说不太好(尝试过,效果不佳)。我一直在使用 numpy.linalg.eigh(我看到只有单个核心执行所有计算)。

或者(对于原来的问题):是否有在线资源,我可以在其中找到有关编译 SciPy 以确保并行执行的更多信息?

最佳答案

对于对称稀疏矩阵特征值/特征向量查找,您可以使用scipy.sparse.linalg.eigsh。它在幕后使用 ARPACK,并且有并行的 ARPACK 实现。 AFAIK,如果您的 scipy 安装使用串行版本,则可以使用 SciPy 进行编译。

但是,如果您需要矩阵的所有特征值和特征向量,那么这不是一个好的答案,因为稀疏版本使用 Lanczos 算法。

如果您的矩阵不是非常大,那么只需使用numpy.linalg.eigh。它使用 LAPACK 或 BLAS,并且可以在内部使用并行代码。

如果您最终自己动手,请注意,SciPy/NumPy 使用不同的高度优化的线性代数包完成所有繁重的工作,而不是使用纯 Python。因此,性能和并行度在很大程度上取决于您的 SciPy/NumPy 安装所编译的库。

(您的问题没有揭示您是否只想在多个处理器或多台计算机上运行并行代码。此外,矩阵的大小对最佳方法有很大影响。所以,这个答案可能完全是偏离目标。)

关于python - 使用 Python 进行并行精确矩阵对角化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004564/

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