【问题标题】:Eigen internal parallelization特征内部并行化
【发布时间】:2014-02-27 17:08:38
【问题描述】:

我正在编写一个数值模拟代码,用于通过矩阵求逆技术求解 N 方程系统。我正在使用在 Eigen 3 中实现的 BiCGStab 求解器。它工作正常,但没有我预期的那么快,所以现在我试图通过 OpenMP 激活多线程,只需使用标志“-fopenmp”在 GCC 上编译。然后,我通过“export OMP_NUM_THREADS=4; ./app_name”设置 shell 中的线程数。问题是系统监视器中只有一个内核在运行,并且计算时间相同,所以我想我错过了一些东西。

有什么想法吗?

我正在运行 Linux Debian 6 64 位、GCC 4.4。

谢谢!!

【问题讨论】:

  • 上次我检查了 Eigen 仅将 OpenMP 用于某些计算,例如大型密集矩阵乘法。

标签: multithreading parallel-processing openmp eigen


【解决方案1】:

(更新)

如今(Eigen 3.3.4),documentation 读作:

目前,以下算法可以使用多线程:

一般密集矩阵 - 矩阵乘积

部分PivLU

row-major-sparse * 密集向量/矩阵乘积

以 Lower|Upper 作为 UpLo 模板参数的 ConjugateGradient。

具有行主要稀疏矩阵格式的 BiCGSTAB。

LeastSquaresConjugateGradient

【讨论】:

    【解决方案2】:

    根据 Eigen 文档站点 (http://eigen.tuxfamily.org/dox/TopicMultiThreading.html):

    目前,以下算法可以使用多线程:通用矩阵-矩阵乘积PartialPivLU

    不幸的是,目前还不支持 BiCGStab(除了可能在内部完成的任何矩阵乘法)

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多