簡體   English   中英

C ++ OpenMP程序

[英]C++ OpenMP program

我試圖使用以下代碼在C ++程序中獲得並行效果:

#include<iostream>
using namespace std;

int main()
{

#pragma omp parallel sections
    {
#pragma omp section
        {
        cout<<"Hello";  
        cout<<" ";  
        cout<<"World";  
        cout<<endl;

        }
#pragma omp section
        {
        cout<<"H";
        cout<<"ello";
        cout<<" W";
        cout<<"orld";
        cout<<endl;
        }
#pragma omp section
        cout<<"Hello"<<" "<<"World"<<endl;
#pragma omp section
{       cout<<"Hello ";
        cout<<"World"<<endl;
}
    }
    return 0;
}

我多次運行這個程序..由於並行性,我期待交錯輸出。

但是,每次運行此程序時,輸出為:

Hello World
Hello World
Hello World
Hello World

難道我做錯了什么?

謝謝

你是如何編寫程序的? OpenMP是否已激活?

除此之外,如果你想要交錯字符,一個更簡單的Hello World看起來像這樣:

int main() {
    char const* str = "Hello world";
    unsigned const len = std::strlen(str);
    #pragma omp parallel for num_threads(4)
    for (unsigned thread = 0; thread < 4; ++thread)
        for (unsigned i = 0; i < len; ++i)
            std::cout << str[i] << std::endl;
}

代碼是正確的,但是交錯輸出很難從這么小的程序中獲得。 嘗試在輸出語句之間調用一些sleep或類似的調用並進行一些刷新。

(您是否編譯並鏈接了-openmp-fopenmp或編譯器想要聽到的內容?)

暫無
暫無

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

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