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