Alexander Vondrous, Britta Nestler, Fakultät IWI, Hochschule Karlsruhe Klausur zu High Performance Computing 09. Juli 2011, SS 2011 Es sind keine Hilfsmittel zugelassen. Bearbeitungszeit: 90 Minuten Aufgabe 1: Forschung und Entwicklung Die Mikroprozessorforschung ist sehr aktiv. Neue Erkenntnisse und Forschungsergebnisse fließen schnell in neue Produkte ein. Laut Gordon Moores Schätzung verdoppelt sich die Anzahl der Transistoren eines Chips etwas alle 24 Monte. Diese Schätzung hat bis heute Bestand und könnte einige Jahre Gültigkeit behalten. a) No free lunch for traditional software (Kein kostenloses Mittagessen für traditionelle Software) Kommentieren Sie diese Aussage vor dem Hintergrund, dass der CPU Takt heute nicht bei 24 GHz liegt und erläutern Sie die Konsequenzen für Softwareentwicklungen. b) Nennen Sie 4 Gründe für parallele Datenverarbeitung. c) In welche zwei groben Kategorien wird parallele Datenverarbeitung unterschieden? Vernachlässigen Sie GPUs. Aufgabe 2: Parallele Leistungsmaße Es ist nicht immer möglich bei gegebener Problemgröße den Speedup eines parallelen Programms zu berechnen, weil die sequentielle Verarbeitung mehrere Jahre benötigen würde. a) Für die zwei Programme foo und bar wurden Messungen bei gleicher Problemgröße und unterschiedlich vielen CPUs durchgeführt. In den folgenden Tabellen sind die Messergebnisse eingetragen. Bestimmen Sie den Speedup zur jeweils vorherigen Messung und bestimmen Sie zum Vergleich den optimalen Speedup. CPUs Laufzeit (foo) Speedup (foo) Speedup optimal (foo) 86 140 h - - 172 84 h 344 63 h CPUs Laufzeit (bar) Speedup (bar) Speedup optimal (bar) 73 64 h - - 292 21 h 584 14 h 876 14 h b) Mit einer hüheren Anzahl CPUs kann mit Programm bar keine Laufzeitreduzierung bei mehr als 584 CPUs erzielt werden. Nennen Sie 3 Ursachen für schlechte Skalierbarkeit.
Aufgabe 3: Amdahl und Gustavson Die theoretische Betrachtung paralleler Leistung (Speedup) lässt sich gut durch Amdahls und Gustavsons Gesetz beschreiben. a) Bei einer Code Analyse des Programmes foobar hat sich herausgestellt, dass der parllele Anteil t p 95% beträgt. Wie hoch würe nach Amdahls Gesetz der Speedup mit 10 CPUs? b) Wie hoch wäre der maximal mögliche Speedup nach Amdahls Gesetz. Lassen Sie die Anzahl CPUs gegen unendlich streben. c) Durch weitere Analysen wurde bemerkt, dass der sequentielle Anteil von der Problemgröße unabhängig und somit konstant ist. Es wurde ermittelt, dass der sequentielle Teil 2 Tage und der parallele Teil 8 Tage bei 230 CPUs benötigte. Berechnen Sie den Speedup nach Gustavson. Aufgabe 4: Hadoop Damit die USS Enterprise in der Lage ist, viele Daten von fremden Galaxien und Zivilisationen schnell zu vearbeiten, wurde neben dem Warpkern im Maschinenraum ein Cluster mit Hadoop eingerichtet. a) Hadoop biete eine einfache Art der Parallelierung. Welche zwei Funktionen werden von Hadoop benötigt und müssen vom Benutzer implementiert werden? Wie heißt der im Hadoop implementierte Algorithmus? b) Für welche Aufgaben ist es sinvoll ein solches Frameworks zu verwenden? Nennen sie 4 Beispiele und zwei Gegenbeispiele. Aufgabe 5: MPI Kommunikationsarten Zur schnellen Berechnung der Materie Antimaterie Reaktion im Warpkern verfügt die Enterprise auch über einen Hochleistungscluster der mit MPI Progammiert werden kann. a) Welche zwei Kommunikationsarten lassen sich bei MPI unterscheiden? b) Nennen Sie jeweils zwei konkrete Beispiele (Pseudocode). c) Wie können parallel Programme mit MPI Synchronisiert werden? d) Nennen Sie 4 Fehler, die bei paralleler Datenverarbeitung auftreten können (Stichpunkte). Aufgabe 6: OpenMP. Neben den großen Systemen besitzt die Enterprise auch mehrere kleinere System die mit Hilfe von OpenMP ihre Aufgaben parallel rechnen. a) Was ist bei der Parallelsierung mit OpenMP bezüglich der Verwendung von Variablen zu beachten? b) OpenMP bietet eine sehr einfach Schnittstelle zur Parallelisierung. Zeigen Sie anhand eines kurzen Pseudo Code Beispiels das Quadrieren aller Elemente eines vectors der Länge n.
Aufgabe 7: Asynchrone Kommunikation mit MPI Das Programm zur Steuerung des Abstandes zwischen Mond und Erde tauscht regelmässig seine Daten über die beiden Asynchronen Funktionn MPI ISend und MPI IRecv aus. Dabei kam es zur Sternzeit -311648.48401826475 zu einem schweren Fehler bei dem der Mond beinahe in die Sonne stürzte. Nur durch den waghalsigen Einsatz von James T. Kirk konnte der Mond auf seine Umlaufbahn zurück gebracht werden. a) Beschreiben Sie das Programmverhalten. b) Finden Sie die Fehler, so dass der Mond auch in Zukunft weiter sicher um die Erde Kreist. c) Erläutern Sie, was bei Asynchroner Kommunikation schief gehen kann, im Vergleich zur Synchronen Kommunikation. // Name : Moon2Earth.c // Author : Scotty #include [...] #define EARTH 0 #define MOON 1 #define SUN 2 int main(int argc, char* argv[]) { int my_rank; /* rank of process */ int p; /* number of processes */ int source; /* rank of sender */ int dest; /* rank of receiver */ int tag=0; /* tag for messages */ int moonpos /* moon position */ // Init MPI and set my_rank, p, MPI_Status status, MPI_Request* request [...] for (int var = 0; var < 100; ++var) { if (my_rank == MOON){ moonpos = calcmoonposition(var); dest = 0; MPI_ISend(&moonpos, sizeof(int), MPI_INT, dest+1, tag, MPI_COMM_WORLD, &request); else if (my_rank == EARTH) { printf("the moon moved to this coordinate: "); int earthpos = calcearthposition(var); for (source = 1; source < p; source++) { MPI_Irecv(&moonpos, sizeof(int), MPI_INT, source, tag, MPI_COMM_WORLD, &request); MPI_Wait(&request, &status); printf("%i\n",moonpos); correctmoonpos(earthpos, moonpos); else { /* Wait for the rest to calculate */ MPI_Barrier(MPI_COMM_WORLD); // Shut down MPI MPI_Finalize(); return 0;
Aufgabe 8: OpenCl Nach den langen und geheimen Verhandlungen mit den Klingonen ist die Manschaft der Enterprise zur Sternzeit -311481.01826484024 an die neuste Graphikkartentechnologie gekommen. Schreiben Sie für die Manschaft in einfachem Pseudocode den Graphikkernel zum Überblenden zweier Bilder (image+ = overlay alpha) mit einer bestimmten Transparenz alpha. Damit ist es nun möglich, Bilder schnell mit einem Föderationslogo zu versehen. Quelltext: kernel void addoverlay ( global float *image, global float *overlay, global float *alpha, global float *x, global float *y) { int tid = get_local_id(0); //TODO: addieren Sie die Werte aus dem Overlayfeld // entsprechend des Alpha Werts auf das Bild! Aufgabe 9: Netzwerke Die Enterprise hat den Ersten Kontakt mit einem Borg Cubus herstgellt. Trotz schwerer Schäden konnte die Enterprise den Borg entkommen. Dabei wurde eine Interessante Beobachtung ihres kollektiven Netzwerkes gemacht. Das Flottenoberkommando interessieren dabei vor allem verschiedene Kenngrößen des Borg Netzerwerks. Bestimmen sie diese Kenngrößen anhand des Ihnen vorliegenden Borg Netzwerks. Abbildung 1: Borg Netwerk Durchmesser Grad (max/min) / Bisektionsbandbreite Konnektivität
Aufgabe 10: Netzwerke Nach der Analyse des Borg Netzwerks möchte sich auch die Föderation auf einen bevorstehenden Krieg mit den Borg rüsten. Die besten Wissenschaftler haben dabei herausgefunden das sie ein Netzwerk mit den folgenden Kenngrößen zur Vernetzung einführen sollten. Durchmesser 1 Grad (max/min) 4 / 4 Bisektionsbandbreite 6 Konnektivität 4 Zeichnen Sie ein Netzwerk mit diesen Kenngrößen. Viel Erfolg! Live long and prosper