【问题标题】:Parallelize SVD computations c++并行化 SVD 计算 c++
【发布时间】:2014-02-05 11:27:55
【问题描述】:

所以我想在 C++ 中对大型矩阵 (1000-25000 x 4096) 进行 SVD 分解。我尝试过 LAPACKE dgesdd、Armadillo svd/svd_econ 和 Eigen,但它们似乎都是单线程的,而且速度很慢。我目前也在尝试实现基于redsvd的解决方案。

您对如何最好使用多线程实现快速 SVD 分解有任何建议吗?我注意到 Matlab 正在使用多线程 SVD,所以它应该是可能的。

另外,如果这很重要的话,我正在一台 64 位 Linux 机器上运行 g++。

提前谢谢你。

【问题讨论】:

  • 我建议使用 CUDA 并在 GPU 上进行。

标签: c++ multithreading parallel-processing svd factorization


【解决方案1】:

英特尔的数学内核库提供 LAPACKE 的并行实施。它们也可用于 Linux。

【讨论】:

  • 谢谢。我会尝试这种方法。
  • 你也可以安装OpenBLAS,然后重新安装Armadillo来使用。这应该为您提供多线程 SVD。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
相关资源
最近更新 更多