omp Pragmas außerhalb omp paralleler Block

8

Ist es ok, omp-Pragmas wie critical, single, master oder barrier außerhalb eines omp-parallelen Blocks zu verwenden? Ich habe eine Funktion, die entweder von einem OMP parallelen Block aufgerufen werden kann oder nicht. Wenn ja, muss ich einen Teil des Codes in einen kritischen Abschnitt einfügen. Mit anderen Worten, ist dieser Code in Ordnung?

%Vor%

Ich habe das in der OpenMP-Dokumentation nicht erwähnt. Ich denke, der Code sollte sich genau so verhalten wie bei der 1-Thread-Ausführung - und so funktioniert es mit gcc. Ich würde gerne wissen, ob dieses Verhalten übertragbar ist, oder ist es etwas, das die Spezifikation nicht definiert und alles zu erwarten ist.

    
angainor 07.09.2012, 11:00
quelle

1 Antwort

2

Laut diesem Dokument:

  

Die DO / for-, SECTIONS-, SINGLE-, MASTER- und BARRIER-Direktiven binden an das dynamisch eingeschlossene PARALLEL, falls eines existiert. Wenn derzeit keine parallele Region ausgeführt wird, haben die Anweisungen keine Auswirkung.

Die Antwort lautet also, dass diese Pragmas außerhalb einer parallelen Region verwendet werden können. Obwohl ich es immer noch nicht explizit in der Dokumentation geschrieben finde.

    
angainor 27.09.2012, 19:24
quelle

Tags und Links