Udostępnij za pośrednictwem


Zagnieżdżone dyrektyw A.18

Następujący przykład for zagnieżdżanie w dyrektywie (2.9 sekcji na stronie 33) jest zgodny z ponieważ wewnętrznymi i zewnętrznymi for dyrektyw powiązać z różnych regionów równoległego:

#pragma omp parallel default(shared)
{
    #pragma omp for
        for (i=0; i<n; i++) 
        {
            #pragma omp parallel shared(i, n)
            {
                #pragma omp for
                    for (j=0; j<n; j++)
                        work(i, j);
            }
        }
}

Następujące zmiany w poprzednim przykładzie jest również zgodny z:

#pragma omp parallel default(shared)
{
    #pragma omp for
        for (i=0; i<n; i++)
            work1(i, n);
}

void work1(int i, int n)
{
    int j;
    #pragma omp parallel default(shared)
    {
        #pragma omp for
            for (j=0; j<n; j++)
                work2(i, j);
    }
    return;
}