所以我想在C++中做一個大矩陣(1000-25000 x 4096)的SVD分解。我已經試過LAPACKE dgesdd,犰狳svd/svd_econ和Eigen,但它們都似乎是單線程和相當慢。我目前也在嘗試實施基於redsvd的解決方案。並行化SVD計算C++
對於如何實現快速SVD分解,最好使用多線程,你有什麼建議嗎?我注意到Matlab正在使用多線程SVD,所以它應該是可能的。
此外,我在64位Linux機器上運行g ++,如果這是重要的。
預先感謝您。
所以我想在C++中做一個大矩陣(1000-25000 x 4096)的SVD分解。我已經試過LAPACKE dgesdd,犰狳svd/svd_econ和Eigen,但它們都似乎是單線程和相當慢。我目前也在嘗試實施基於redsvd的解決方案。並行化SVD計算C++
對於如何實現快速SVD分解,最好使用多線程,你有什麼建議嗎?我注意到Matlab正在使用多線程SVD,所以它應該是可能的。
此外,我在64位Linux機器上運行g ++,如果這是重要的。
預先感謝您。
英特爾的Math Kernel Libraries提供了LAPACKE的並行實現。它們也可用於Linux。
謝謝。我會嘗試這種方法。 – user3190373
您也可以安裝[OpenBLAS](http://www.openblas.net/),然後重新安裝[Armadillo](http://arma.sourceforge.net)以使用它。這應該會給你多線程的SVD。 – mtall
我會建議使用CUDA並在GPU上執行此操作。 – 4pie0