c++ - OpenMP - 主指令中的并行区域

标签 c++ parallel-processing openmp

我想在主区域内声明一个并行,如下所示:

#pragma omp parallel
{
    #pragma omp master
    {
        *many functions...*

        #pragma omp parallel for
        for (int i = 0; i < x; ++i){
            a += i;
        }
    }
}

这只是一个示例代码,我有数百个函数,我不想在每个函数中手动添加主子句,但这可能吗?还是有其他方法可以做我想做的事?

最佳答案

#pragma omp parallel
{
    //mater only
    #pragma omp master  
    {
       *many functions...*
    }
    //full team: just for not parallel for
    #pragma omp for 
    for(int i = 0; i < x; ++i){
        a += i;
    }
}

只需在 Material 外部声明 for。

或者只是一起执行并行部分之外的顺序操作

    *many functions...*

#pragma omp parallel for 
for(int i = 0; i < x; ++i){
    a += i;
}

关于c++ - OpenMP - 主指令中的并行区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773356/

相关文章:

C++ 重写一个成员变量

c++ - 在 C++ 中,我们无法在没有初始化的情况下声明引用。为什么?

c++ - 序列化 mpi 线程

c++ - 超线程如何影响并行化?

c++ - 是否可以在 C++ 中使用 openmp 进行乘法初始化?

c++ - html5 d3d 应用程序菜单/hud

c++ - C++ 中的外部:对于外部 VarX 变量::错误 LNK2001:未解析的外部符号 "unsigned int VarX"(?VarX@@3IA)

linux - 我可以等待特定的子进程在 perl 中终止吗

c++ - 在 64 位 x 64 位乘法中使用 Karatsuba 算法真的很高效吗?

cuda - 在没有 CUDA 的情况下插入 OpenMP?