[英]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.