5

我想svd()在一个大型稀疏矩阵(17k x 2m)上在 R 中运行,并且我可以访问一个集群。有没有一种直接的方法可以使用多核在 R 中计算 SVD?

RScaLAPACK 包(http://www.inside-r.org/packages/cran/RScaLAPACK)似乎使这成为可能,但似乎不再受到积极支持(http://cran.r-project.org /web/packages/RScaLAPACK/),我认为这是有原因的。

4

3 回答 3

2

rARPACK是您需要的软件包。像魅力一样工作(即使矩阵比您的规格大得多)。超快,因为它通过 C 和 C++ 并行化。

于 2014-04-06T06:46:00.127 回答
2

rARPACK是一种选择,但请确保您拥有优化的多核 BLAS 库,因为所有并行计算部分都不是在rARPACK其本身,而是在 BLAS 中。

另外,请注意rARPACK只计算PARTIAL SVD,这意味着它只计算最大的k奇异值和相关的奇异向量。如果您确实需要完整的 SVD,您仍然可以转而使用svd().

于 2014-05-02T21:08:01.520 回答
1

你也可以考虑 bigstatsr::bigSVD()。我已经对其进行了测试,当我处理大型甲基化数据集时,它往往比我的 GPU 更快。它不是并行的,但我发现它的性能确实非常出色。

于 2021-07-14T16:17:10.443 回答