OpenMP - параллельная область в главной директиве - PullRequest
0 голосов
/ 19 марта 2012

Я хочу объявить параллель для главной области, например:

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

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

Это всего лишь пример кода, у меня есть сотни функций, которые я не хочу вручную добавлять мастерпункт в каждом из них, но возможно ли это сделать?Или есть другой способ сделать то, что я хочу?

1 Ответ

3 голосов
/ 19 марта 2012
#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;
    }
}

Просто объявите внешнюю сторону материала.

Или просто выполните последовательные действия вне параллельной секции вместе

    *many functions...*

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