svds-C: A Multi-Thread C Code for Computing Truncated Singular Value Decomposition
Xu Feng, Wenjian Yu, Yuyang Xie

TL;DR
svds-C is a high-performance, multi-threaded C implementation for truncated SVD that significantly outperforms existing tools in speed and memory efficiency while maintaining accuracy.
Contribution
This paper introduces svds-C, a parallel C program for truncated SVD that improves speed and memory usage over previous implementations and state-of-the-art algorithms.
Findings
svds-C runs 4.7X to 12X faster than svds with 16 threads.
svds-C uses about half the memory of svds.
svds-C outperforms other algorithms in speed and robustness.
Abstract
This article presents svds-C, an open-source and high-performance C program for accurately and robustly computing truncated SVD, e.g. computing several largest singular values and corresponding singular vectors. We have re-implemented the algorithm of svds in Matlab in C based on MKL or OpenBLAS and multi-thread computing to obtain the parallel program named svds-C. svds-C running on shared-memory computer consumes less time and memory than svds thanks to careful implementation of multi-thread parallelization and memory management. Numerical experiments on different test cases which are synthetically generated or directly from real world datasets show that, svds-C runs remarkably faster than svds with averagely 4.7X and at most 12X speedup for 16-thread parallel computing on a computer with Intel CPU, while preserving same accuracy and consuming about half memory space. Experimental…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Embedded Systems Design Techniques · Numerical Methods and Algorithms
