Untitled
Untitled
Untitled
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3.2 Zugriff auf Variablen und Kommunikation zwischen Threads 37<br />
3.2 Zugriff auf Variablen und<br />
Kommunikation zwischen Threads<br />
Die Threads eines Teams werden in einem gemeinsam genutzten<br />
Adressraum ausgeführt. Im obigen SAXPY-Beispiel<br />
konnten alle Threads auf alle Variablen im parallelen Codeabschnitt<br />
zugreifen. Dies vereinfacht die Kommunikation<br />
zwischen den Threads erheblich: Um Daten an andere<br />
Threads zu senden, schreibt ein Thread die zu übertragenden<br />
Werte in gemeinsam genutzte Variablen, von wo aus<br />
sie von anderen Threads eingelesen werden können. Für<br />
manche Variablen ist dieses Verhalten jedoch unerwünscht.<br />
OpenMP ermöglicht es daher, sogenannte private Variablen<br />
exklusiv einem Thread zuzuordnen und ihren Gültigkeitsbereich<br />
auf diesen zu beschränken. Die in diesem Abschnitt<br />
vorgestellten Datenzugriffsklauseln, die über den Gültigkeitsbereich<br />
von Variablen entscheiden, sind im Einzelnen:<br />
• shared und private:<br />
Sie markieren eine Variable ausdrücklich als von allen<br />
Threads gemeinsam oder von einem Thread privat genutzt.<br />
• firstprivate und lastprivate:<br />
Der Inhalt privater Variablen ist beim Eintritt und beim<br />
Verlassen ihres Gültigkeitsbereichs undefiniert. Die Klauseln<br />
firstprivate und lastprivate erlauben eine Initalisierung<br />
bzw. Finalisierung ihrer Werte.<br />
• default:<br />
Wie im SAXPY-Beispiel gesehen, werden Variablen, die<br />
nicht ausdrücklich mit einer shared- bzw. private-<br />
Klausel aufgeführt werden, gemeinsam von allen Threads<br />
genutzt. Mit der Klausel default kann dieses Standardverhalten<br />
verändert werden.<br />
• reduction:<br />
Die reduction-Klausel schließlich kennzeichnet spezi-