我想在R大型稀疏矩陣(17k x 2m)上運行svd()
,並且我可以訪問羣集。有沒有一種直接的方法可以用多核來計算R中的SVD?使用R中的多個核心計算SVD
RScaLAPACK軟件包(http://www.inside-r.org/packages/cran/RScaLAPACK)似乎使這成爲可能,但它似乎不再支持(http://cran.r-project.org/web/packages/RScaLAPACK/),我認爲這是有原因的。
我想在R大型稀疏矩陣(17k x 2m)上運行svd()
,並且我可以訪問羣集。有沒有一種直接的方法可以用多核來計算R中的SVD?使用R中的多個核心計算SVD
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
只計算局部 SVD,這意味着它僅計算最大k
奇異值和相關的奇異向量。如果您確實需要完整的SVD,您仍然可以使用svd()
。
幾乎所有的BLAS都是合適的,甚至是預編譯的(例如Ubuntu的默認),並且調整它們需要很多時間。 – isomorphismes 2015-04-01 00:28:57