簡體   English   中英

OpenMP:為什么這些omp並行段不通過多個線程執行?

[英]OpenMP: Why are these omp parallel sections not executed with multiple threads?

我正在嘗試並行化一些代碼,但是遇到了(可能是愚蠢的)問題。 下面的示例代碼返回“ 12”,盡管我希望是“ 21”。

當我在此塊中的任何地方調用它們時,omp_get_max_threads()返回8,omp_get_num_threads()返回1,而omp_get_thread_num()返回0。 我想我可以得出結論,它只是由主線程按順序執行。

#include <omp.h>
#include <iostream>
#include <Windows.h>

using namespace std;

int main() {
    #pragma omp parallel sections num_threads(2) 
    {
        #pragma omp section 
            { Sleep(200);
              cout << "1"; }
        #pragma omp section 
            { cout << "2"; }
    }
}

我究竟做錯了什么? 如何強制並行處理這些部分?

對於上下文:我正在從兩個USB 3.0攝像機流式傳輸數據,並且依次依次調用每個圖像的速度太慢,以至於丟失幀。 我想基本上為每台相機留出一個線程,以不斷要求其圖像。

這個問題的標題相似,但是沒有幫助。 我正在使用Visual Studio 2010。

注釋是正確的:我忘記在項目設置中設置OMP支持。

值得注意的是,我可以從相機傳輸的幀數下降了。 最大化使用的帶寬並不像我想的那么簡單。

暫無
暫無

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

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