23.12.2012 Aufrufe

Vielteilchentheorien in Modellräumen mit diskreter Darstellung

Vielteilchentheorien in Modellräumen mit diskreter Darstellung

Vielteilchentheorien in Modellräumen mit diskreter Darstellung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

52 Kapitel 4 Technische Aspekte<br />

berechnet oder nicht. Jeder der zur Verfüngung stehenden Prozessoren kann so e<strong>in</strong>en<br />

Teil der Vektore<strong>in</strong>träge berechnen, da diese über den Index des Felds v[i] <strong>in</strong> verschiedene<br />

Speicherbereiche geschrieben werden.<br />

Natürlich können auch kompliziertere Schleifen parallelisiert werden, da die Vorgehensweise<br />

aber immer auf dem gleichen Pr<strong>in</strong>zip beruht, soll hier nicht näher darauf e<strong>in</strong>gegangen<br />

werden. Angemerkt sei noch, daß man bei <strong>in</strong>e<strong>in</strong>ander verschachtelten Schleifen immer<br />

versuchen sollte, die äußerste Schleife zu parallelisieren, da<strong>mit</strong> möglichst wenig Kommunikation<br />

erforderlich ist. Außerdem sollte man <strong>in</strong> diesem Fall nie mehr als e<strong>in</strong>e der<br />

Schleifen parallelisieren. Wird e<strong>in</strong>e der Schleifen auf die Anzahl der Prozessoren verteilt,<br />

ist die Leistung des Systems bereits optimal ausgelastet und e<strong>in</strong>e weitere Parallelisierung<br />

würde Ressourcen anfordern, die es nicht gibt. Virtuelle Threads und hohe Kommunikationsverluste<br />

wären die Folge.<br />

Parallele Tasks<br />

E<strong>in</strong>e der Parallelisierung von Schleifen ähnliche, aber etwas universeller anwendbare Technik<br />

ist die taskparallele Programmierung. Auch hierbei wird ausgenützt, daß Programmteile<br />

die nicht gegenseitig vone<strong>in</strong>ander abhängen, gleichzeitig ausgeführt werden können.<br />

Die Parallelisierung von Schleifen ist im Pr<strong>in</strong>zip nichts anderes als e<strong>in</strong> Spezialfall paralleler<br />

Tasks, deren Verwaltung der Compiler übernimmt. Während bei parallelen Schleifen<br />

wie der Matrix–Vektor–Multiplikation jeder Task dieselben Rechenschritte durchführt,<br />

können bei der taskparallelen Programmierung die e<strong>in</strong>zelnen Prozesse völlig unterschiedliche<br />

Rechenoperationen durchführen.<br />

So kann z. B. e<strong>in</strong> Task <strong>mit</strong> e<strong>in</strong>em Parametersatz e<strong>in</strong>en Least–Square–Fit durchführen und<br />

so zu e<strong>in</strong>en Vektor �v aus bestmöglichen Koeffizienten gelangen, während e<strong>in</strong> anderer Task<br />

gleichzeitig e<strong>in</strong>e Matrix A <strong>in</strong>vertiert. Nach Beendigung der Tasks wäre dann das l<strong>in</strong>eare<br />

Gleichungssystem A�u = �v <strong>mit</strong> �u = A −1 �v bereits gelöst. Im Gegensatz zu parallelen<br />

Schleifen, ist es so <strong>mit</strong> taskparalleler Programmierung möglich, gleichzeitig verschiedene<br />

Rechenoperationen ablaufen zu lassen. Bei dieser Vorgehensweise muß allerd<strong>in</strong>gs für jeden<br />

Task e<strong>in</strong> eigener Quellcode geschrieben werden, was die Programmierung etwas umständlicher<br />

macht. Auch ist darauf zu achten, daß jeder Task nur se<strong>in</strong>e privaten Variablen<br />

verändert und daß globale Variablen nur als Input verwendet werden. Darüberh<strong>in</strong>aus ist<br />

es bei taskparalleler Programmierung schwieriger die e<strong>in</strong>zelnen Aufgaben gleichmäßig auf<br />

die e<strong>in</strong>zelnen Prozessoren zu verteilen. Der Vorteil der Parallelisierung kann fast völlig<br />

zunichte gemacht werden, wenn e<strong>in</strong> Task sehr viel länger zur Bewältigung se<strong>in</strong>er Rechenoperationen<br />

benötigt, als die anderen. Der weitere Programmablauf wird nämlich erst<br />

dann fortgesetzt, wenn alle Tasks beendet s<strong>in</strong>d. Während man bei Schleifen durch e<strong>in</strong>faches<br />

dividieren der Gesamtiterationszahl durch die Anzahl der benützten Prozessoren

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!