Out-of-core singular value decomposition
ExB Labs
arXiv:1907.06470 [cs.MS], (15 Jul 2019)
@misc{demchik2019out,
title={Out-of-core singular value decomposition},
author={Demchik, Vadim and Bačák, Miroslav and Bordag, Stefan},
year={2019},
eprint={1907.06470},
archivePrefix={arXiv},
primaryClass={cs.MS}
}
Singular value decomposition (SVD) is a standard matrix factorization technique that produces optimal low-rank approximations of matrices. It has diverse applications, including machine learning, data science and signal processing. However, many common problems involve very large matrices that cannot fit in the main memory of commodity computers, making it impractical to use standard SVD algorithms that assume fast random access or large amounts of space for intermediate calculations. To address this issue, we have implemented an out-of-core (external memory) randomized SVD solution that is fully scalable and efficiently parallelizable. This solution factors both dense and sparse matrices of arbitrarily large size within arbitrarily small memory limits, efficiently using out-of-core storage as needed. It uses an innovative technique for partitioning matrices that lends itself to out-of-core and parallel processing, as well as memory and I/O use planning, automatic load balancing, performance tuning, and makes possible a number of other practical enhancements to the current state-of-the-art. Furthermore, by using persistent external storage (generally HDDs or SSDs), users can resume interrupted operations without having to recalculate previously performed steps, solving a major practical problem in factoring very large matrices.
July 16, 2019 by hgpu