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