在R中使用多核计算SVD



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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新