17.01.2014 Aufrufe

Institutsbericht 2010/2011 - Leibniz-Institut für Atmosphärenphysik ...

Institutsbericht 2010/2011 - Leibniz-Institut für Atmosphärenphysik ...

Institutsbericht 2010/2011 - Leibniz-Institut für Atmosphärenphysik ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Dieser Mehraufwand wird toleriert, weil das Einlesen der relevanten Daten durch einen Prozess<br />

später erforderliche Änderungen der Initialisierung negativ beeinflussen würde. Im Verlauf des<br />

Programms verschickt dann der Root-Prozess die jeweilig notwendigen Daten an alle anderen und<br />

diese senden dann die ermittelten Ergebnisse zurück. Nach Abschluss der Kommunikation ist der<br />

Vektor vollständig aktualisiert. Ein Großteil der Berechnungen erfolgt aufgeteilt in Breitenkreise.<br />

Die Aufteilung mittels MPI sollte möglichst gleichmäßig erfolgen. Danach werden die Berechnungen<br />

innerhalb der Prozesse in OpenMP parallelisiert ausgeführt. Wegen der zugrunde liegenden<br />

Hardwarearchitektur bietet es sich hier an, pro Knoten einen MPI-Prozess zu starten und dann<br />

mit OpenMP 12 Threads darauf zu starten. Um möglichst viele Prozessoren zu nutzen, sollte<br />

die Berechnung der 144 Breitenkreise (T120) in einzelnen Schleifendurchläufen erfolgen, vorher<br />

wurden jeweils 2 symmetrische Breitenkreise zusammengefasst. Dies ergab 72 Schleifendurchläufe<br />

(entsprechend 6 Knoten), optimal ist aber eine Aufteilung auf 12 Knoten. Dementsprechend wurde<br />

die Konfiguration des Rechners angepasst (maximal standen nur 11 Knoten zur Verfügung), so<br />

dass nun 12 Knoten je 12 Prozessorkernen genutzt werden konnten.<br />

Nun musste noch das Unterprogramm für das Zeitschrittverfahren parallelisiert werden. Hier<br />

wurden nach dem zuvor beschriebenen Muster die Schleifendurchläufe mittels MPI-Funktionen auf<br />

die Knoten verteilt und dann mit OpenMP parallel auf den Prozessorkernen ausgeführt. Um bei<br />

der Aufteilung den Speicherzugriff so gering wie möglich zu halten, läuft bei ineinander verschachtelten<br />

Schleifen immer der äußere Index langsamer. Im vorliegenden Fall handelt es sich dabei<br />

um einen immer größer werdenden Wert, so dass mit steigendem Index auch die Rechenzeit pro<br />

Schleifendurchlauf größer wird. Durch Laufzeitanalysen wurde ermittelt, dass die Rechenzeit aber<br />

langsamer als die Anzahl der Schleifendurchläufe ansteigt, somit ergibt sich eine optimale Verteilung<br />

auf Basis der gemessenen Laufzeiten. Dies geschieht während der Initialisierung, die gefundene<br />

Aufteilung wird dann nach Indizes sortiert, um die Effizienz der Kommunikation zu erhöhen. Die<br />

notwendige Kommunikation wird asynchron ausgeführt. Weiterhin wurde der Programmablauf<br />

umsortiert und einzelne Rechenschritte zusammengefasst, ohne damit die Komplexität bezüglich<br />

der Cache-Effizienz zu erhöhen. Damit reduzierte sich die Laufzeit auf 33,3 %.<br />

Abb. 44.2: Laufzeitverteilung des Unterprogramms für das Zeitschrittverfahren (semiint); links: unter<br />

Beteiligung des Root-Prozesses, rechts: ohne<br />

Eine weitere Analyse zeigte aber, dass die Laufzeiten sehr instabil sind. Diese Laufzeitprobleme<br />

entstanden stets durch den Root-Prozess, daher wurden diesem keine Berechnungen mehr<br />

zugeteilt (Abb. 44.2). Dadurch verringert sich zwar die Zahl der rechnenden Prozessorkerne, doch<br />

der Gewinn an Stabilität gleicht dies aus, insbesondere gilt das bei einer zunehmenden Zahl von<br />

verwendeten Prozessorkernen. Die Laufzeit betrug nun nur noch 23,3 % des Ausgangswertes.<br />

Die vorgenommenen Änderungen haben insgesamt zu einer deutlich kürzeren Laufzeit des<br />

KMCM geführt (Abb. 44.1). Es konnte nicht nur eine bessere Ausnutzung der vorhandenen Rechnerarchitektur<br />

erreicht werden, darüber hinaus konnte die Laufzeit grundsätzlich reduziert werden.<br />

Dies wirkt sich besonders positiv auf Läufe mit höherer Auflösung wie T240 aus, da mit steigender<br />

Modellgröße der Mehraufwand des Systems für die Parallelisierung in Bezug auf den Rechenaufwand<br />

kleiner wird.<br />

122

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!