Skip to main content
QUICK REVIEW

[论文解读] PRIMME_SVDS: A High-Performance Preconditioned SVD Solver for Accurate Large-Scale Computations

Lingfei Wu, Eloy Romero|arXiv (Cornell University)|Jul 5, 2016
Matrix Theory and Algorithms参考文献 34被引用 6
一句话总结

PRIMME_SVDS 是一种高性能、预处理的 SVD 求解器,用于在大规模稀疏矩阵中计算少量极端奇异三元组。它结合了两阶段迭代方法与基于 PRIMME 特征值求解器框架的预处理技术,在最小奇异值和病态问题上,相比 PROPACK 和 SLEPc 实现了更优的精度和速度。

ABSTRACT

The increasing number of applications requiring the solution of large scale singular value problems have rekindled interest in iterative methods for the SVD. Some promising recent ad- vances in large scale iterative methods are still plagued by slow convergence and accuracy limitations for computing smallest singular triplets. Furthermore, their current implementations in MATLAB cannot address the required large problems. Recently, we presented a preconditioned, two-stage method to effectively and accurately compute a small number of extreme singular triplets. In this research, we present a high-performance software, PRIMME SVDS, that implements our hybrid method based on the state-of-the-art eigensolver package PRIMME for both largest and smallest singular values. PRIMME SVDS fills a gap in production level software for computing the partial SVD, especially with preconditioning. The numerical experiments demonstrate its superior performance compared to other state-of-the-art software and its good parallel performance under strong and weak scaling.

研究动机与目标

  • 解决现有软件在计算部分 SVD,特别是最小奇异三元组方面缺乏鲁棒性和高性能的问题。
  • 克服现有迭代 SVD 方法在病态和奇异值聚集问题上的收敛缓慢与精度不足问题。
  • 通过预处理实现高效的大规模 SVD 计算,这对实际应用至关重要。
  • 提供一个生产级别的多语言库(C、MATLAB、Python、R),支持共享内存和分布式内存。
  • 与最先进的工具包(如 PROPACK 和 SLEPc)相比,展示出更优的性能和可扩展性。

提出的方法

  • 将原本专为特征值问题设计的两阶段 PHSVDS 方法,通过等价的特征形式转化,改编为一种预处理的 SVD 求解器。
  • 使用正规方程形式(A^T A)和增广系统(A^T A; A)求解奇异三元组,并基于数值稳定性情况启发式地在两者之间切换。
  • 集成 PRIMME 框架,以利用先进的 Krylov 子空间方法(如 JDQR、JDQMR、GMRES)和预处理技术。
  • 实施混合策略:第一阶段使用预处理迭代方法(如 GD+k、JDQMRETol)以加速收敛,第二阶段对解进行精化。
  • 支持对称与非对称矩阵,并自动在两种公式之间切换以提高鲁棒性。
  • 提供灵活的接口,支持单机与分布式内存并行计算,通过 librsb 和 Elemental 优化矩阵-向量乘法。

实验结果

研究问题

  • RQ1预处理的两阶段迭代 SVD 方法是否能在大规模问题中,对最小奇异三元组实现高精度与高性能?
  • RQ2在大规模病态矩阵上,PRIMME_SVDS 与 PROPACK 和 SLEPc 相比,在收敛速度、精度和可扩展性方面表现如何?
  • RQ3预处理在 SVD 计算中在多大程度上提升了收敛速度并减少了矩阵-向量乘法次数?
  • RQ4是否可以基于现有的特征值求解器框架(PRIMME)构建一个生产级别的 SVD 库,同时支持多种编程语言和并行架构?
  • RQ5在不同问题类型中,正常方程与增广系统公式之间的启发式切换在保持鲁棒性方面有多有效?

主要发现

  • PRIMME_SVDS 在速度和鲁棒性方面均优于 PROPACK 和 SLEPc,尤其在最小奇异三元组和病态矩阵上表现更优。
  • 通过预处理,PRIMME_SVDS 相较于非预处理方法,将矩阵-向量乘法次数减少了高达 90%,运行时间也减少了高达 90%,在 cage15 和 atmosmodl 等矩阵上得到验证。
  • 在 LargeRegFile 矩阵上,PRIMME_SVDS 相较于 libskylark 的 CondEst 函数实现了 12 倍的加速,且使用相同的停止准则。
  • 使用 librsb 进行矩阵-向量乘法相比 Elemental 在 libskylark 中实现了 2 倍的加速,凸显了优化内核的重要性。
  • PRIMME_SVDS 在分布式内存系统上表现出良好的强可扩展性和弱可扩展性,证实其适用于大规模 HPC 环境。
  • 该库在相对容差为 0.1 的情况下实现了高精度,其停止准则比 libskylark 中使用的概率性小误差准则更具可靠性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。