簡體   English   中英

使 Eigen 在多線程中運行

[英]Make Eigen run in a Multi-Thread

我有一些關於 Eigen 並行化的問題。

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

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

#pragma omp parallel
{
}

查看我的系統監視器,我可以看到有時我使用了多個線程,但大多數時候不是。 我不知道是否必須使用額外的 OpenMp 代碼。

在以下鏈接中:

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

他們提到“在您的應用程序與 OpenMP 並行化的情況下,您可能想要禁用 Eigen 自己的並行化,如上一節所述”,但我真的不明白我是否必須這樣做或如何去做。

我希望我沒有在這里混淆概念。

我提前致謝。

引用您發布的鏈接:

目前,可以利用多線程的算法有: 通用矩陣——矩陣乘積PartialPivLU

因此,在不確切知道您的程序在做什么的情況下,我會猜測它主要不是大型矩陣乘法和/或 PartialPivLU。 這僅涉及 Eigen 的內部並行化。 您在 omp 並行塊中執行的操作可能會按預期運行(多線程)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM