使Eigen在多线程中运行

时间:2016-09-27 11:14:08

标签: c++ multithreading parallel-processing openmp eigen

我对本征并行化有一些疑问。

根据我的理解,Eigen处理其内部并行化但我想激活多线程。我刚开始用G ++编译,使用标志“-fopenmp”并使用OMP_NUM_THREADS = 4 ./exec运行我的可执行文件。

仅使用我使用的C ++代码运行的代码的某些部分:

#pragma omp parallel
{
}

查看我的系统监视器,我可以看到有时候我使用了多个线程,但大部分时间都没有。我不知道是否必须使用额外的OpenMp代码。

在以下链接中:

https://eigen.tuxfamily.org/dox/TopicMultiThreading.html

他们提到“如果您的应用程序与OpenMP并行化,您可能希望禁用Eigen自己的并行化,如上一节所述”,但我不知道我是否必须或如何执行此操作。

我希望我不会在这里混合概念。

我提前感谢。

1 个答案:

答案 0 :(得分:1)

从您发布的链接引用:

  

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

因此,如果不确切知道你的程序在做什么,我就会猜测它不是大型矩阵 - 矩阵乘法和/或PartialPivLU。这只涉及Eigen的内部并行化。您在omp并行块中执行的操作可能会按预期运行(多个线程)。