Computing SVD using multiple cores in R

I want to run svd() in R on a large sparse matrix (17k x 2m), and I have access to the cluster. Is there an easy way to calculate SVD in R using multiple cores?

The RScaLAPACK package ( http://www.inside-r.org/packages/cran/RScaLAPACK ) seems to make this possible, but it is no longer supported by active support ( http://cran.r-project.org/web/ packages / RScaLAPACK / ), and I assume there is a reason for this.

+4
source share
2 answers

rARPACK is the package you need. Works like a charm (even with a matrix much larger than your specification). Superfast because it is parallelized through C and C ++.

+1
source

rARPACK is one of the options, but make sure you have an optimized multi-core BLAS library, since the entire parallel computing part is not in rARPACK , but in BLAS.

Also, be careful that rARPACK only calculates PARTIAL SVD, which means that it only calculates the largest t23 values ​​and the corresponding singular vectors. If you need full SVD, you can still use svd() .

+1
source

Source: https://habr.com/ru/post/1479854/


All Articles