您的位置:首页 > 运维架构

[openmp]使用嵌套并行

2014-10-15 22:16 211 查看
变量
OMP_NESTED
设置使其可以在函数中并行。

#include "omp.h"
#include <cstdio>
#include <iostream>

using namespace std;

omp_nest_lock_t lock;

void roll(int d)
{
omp_set_nest_lock(&lock);
cout << "first thread " << d << endl;
omp_unset_nest_lock(&lock);
#pragma omp parallel
{
int d = omp_get_thread_num();
omp_set_nest_lock(&lock);
cout << "thread " << d << endl;
omp_unset_nest_lock(&lock);
}
}

int main()
{
omp_set_num_threads(4);
omp_set_nested(1);  //允许嵌套并行,注释掉这句看效果,注释掉这句看效果
omp_init_nest_lock(&lock);
#pragma omp parallel
{
int d = omp_get_thread_num();
roll(d);
}
omp_destroy_nest_lock(&lock);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: