【发布时间】:2014-09-20 04:34:44
【问题描述】:
是否有人知道并行精确矩阵对角化(等效地,找到特征系统)的实现版本(可能使用 scipy/numpy)?如果有帮助,我的矩阵是对称且稀疏的。我不想花一天时间重新发明轮子。
编辑:
我的矩阵至少为 10,000x10,000(但最好至少大 20 倍)。目前,我只能使用 4 核 Intel 机器(具有超线程,因此每个核心有 2 个进程),每个 3.0Ghz 有 12GB 的 RAM。我以后可能可以访问一个 128 核节点 ~3.6Ghz/core 和 256GB RAM,所以单机/多核应该这样做(对于我的其他并行任务,我一直在使用 multiprocessing)。我希望算法能够很好地扩展。
我确实需要精确的对角化,所以scipy.sparse 例程对我不利(尝试过,效果不佳)。我一直在使用numpy.linalg.eigh(我看到只有单核在做所有的计算)。
或者(针对原始问题):是否有在线资源可以让我找到更多关于编译 SciPy 以确保并行执行的信息?
【问题讨论】:
-
我刚注意到投了反对票。也许可以就如何改进问题或下次避免什么给出一个理由和建议?
-
对角化是什么意思?如果对角线上的条目是非理性的并且不能用根来表示,那么您期望什么作为“精确”答案?
-
@Alexey 的帖子可能太旧了,没有兴趣,但“精确”对角化与备用矩阵方法形成对比......例如共轭梯度迭代方法,其中仅以迭代方式计算所需的最低特征值/向量。较高的特征值/向量可能相当不准确。精确对角化返回所有“精确”特征值/向量,但缩放比例很差;迭代方法可以更好地扩展,但在某种意义上显然是“近似的”。
标签: python numpy scipy linear-algebra numerical-methods