2016-09-27 77 views
2

我有一些關於Eigen並行化的問題。讓Eigen運行在多線程中

據我瞭解,Eigen處理其內部並行化,但我想激活多線程。我剛剛開始用G ++編譯,使用標誌「-fopenmp」並運行OMP_NUM_THREADS = 4 ./exec的可執行文件。

僅運行用C代碼的某些部分++代碼我使用:

#pragma omp parallel 
{ 
} 

看着我的系統監視器,我可以看到,有時我用了一個多線程的,但大多數時間它不是」噸。我不知道是否必須使用其他OpenMp代碼。

在下面的鏈接:

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

他們提到,「在你的應用程序並行使用OpenMP的情況下,你可能要禁用徵自己parallization在上一節中詳細介紹」,但我真的不明白我是否必須或如何去做。

我希望我不是在這裏混合概念。

我在此先感謝。

回答

1

從您發佈的鏈接引用:

目前,以下算法可以利用多線程:通用矩陣 - 矩陣產品PartialPivLU

因此,不知道到底是什麼程序正在做,我猜測它不是大多矩陣矩陣乘法和/或PartialPivLU。這隻考慮Eigen的內部並行化。你在omp並行塊中做什麼可能會按預期運行(多線程)。