Back to Search
Start Over
svds-C: A multi-thread C code for computing truncated singular value decomposition
- Source :
- SoftwareX; September 2024, Vol. 27 Issue: 1
- Publication Year :
- 2024
-
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 svdsin Matlab in C based on MKL or OpenBLAS and multi-thread computing to obtain the parallel program named svds-C. svds-Crunning on shared-memory computer consumes less time and memory than svdsthanks 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-Cruns remarkably faster than svdswith 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 results also demonstrate that svds-Chas similar advantages over svdson the computer with AMD CPU, and outperforms other state-of-the-art algorithms for truncated SVD on computing time and robustness.
Details
- Language :
- English
- ISSN :
- 23527110
- Volume :
- 27
- Issue :
- 1
- Database :
- Supplemental Index
- Journal :
- SoftwareX
- Publication Type :
- Periodical
- Accession number :
- ejs66520847
- Full Text :
- https://doi.org/10.1016/j.softx.2024.101781