特征内部并行化

时间:2014-02-27 17:08:39

标签: multithreading parallel-processing openmp eigen

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

有什么想法吗?

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

  

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

不幸的是,不支持BiCGStab(除了内部可能进行的任何矩阵乘法)

答案 1 :(得分:1)

(更新)

如今(Eigen 3.3.4),documentation读作:

  

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

     

一般致密基质 - 基质产品

     

PartialPivLU

     

行 - 主 - 稀疏*密集向量/矩阵乘积

     

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

     

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

     

LeastSquaresConjugateGradient