2012-05-04 4 views
8

Gibt es eine implizite omp Barriere nach omp kritischen AbschnittGibt es eine implizite Barriere nach omp kritischen Abschnitt

Zum Beispiel kann ich diesen folgenden Code-Version-1 in Version-2 ändern.

VERSION-1

int min = 100; 
#pragma omp parallel 
{ 
    int localmin = min; 

    #pragma omp for schedule(static) 
    for(int i = 0; i < 1000; i++) 
     localmin = std::min(localmin, arr[i]); 

    #pragma omp critical 
    { 
     min = std::min(localmin, min) 
    } 
} 

VERSION-2

int min = 100; 
#pragma omp parallel 
{ 
    int localmin = min; 

    #pragma omp for schedule(static) nowait 
    for(int i = 0; i < 1000; i++) 
     localmin = std::min(localmin, arr[i]); 

    #pragma omp critical 
    { 
     min = std::min(localmin, min) 
    } 
} // will I get the right "min" after this (because I have included nowait) 

Will ich das gleiche Ergebnis für beide Version-1 und Version-2 bekommen?

Gibt es eine implizite Barriere nach der kritischen omp-Region?

EDIT: Sorry, wenn das Beispiel sehr schlecht ist .. Auch ich möchte, ob wissen es einen Unterschied in der Leistung zwischen Version-1 und Version-2

+0

Das ist wahrscheinlich nicht das beste Beispiel, da es eine Barriere geben wird, wenn Sie die parallele Region verlassen. Aber gute Frage trotzdem. +1 – Mysticial

+0

Es gibt keinen Leistungsvorteil in v2 gegenüber v1 in dem von Ihnen geposteten Beispiel, aber in der realen Welt könnte es sein. –

Antwort

11

Kritische Abschnitte haben keine Barrieren wäre weder an ihren Anfängen noch an ihren Enden. Ein kritischer Abschnitt ist ein Synchronisierungskonstrukt, das verhindert, dass mehrere Threads gleichzeitig auf dieselben Daten zugreifen. Sie benötigen eine zusätzliche Barriere nach dem kritischen Abschnitt, wenn Sie das korrekte globale Minimum haben möchten, bevor Sie den parallelen Bereich verlassen. Wie bereits gesagt, hat die parallele Region am Ende eine implizite Barriere.

0

Sie erhalten einen Leistungsvorteil, wenn Sie nowait verwenden, wenn es eine große Anzahl von Iterationen gibt.

Verwandte Themen