Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
se:parallelrechner [2009-01-18 18:40] stefan |
se:parallelrechner [2009-01-19 16:07] stefan |
||
---|---|---|---|
Zeile 42: | Zeile 42: | ||
* Beispiel: verteilter gemeinsamer Speicher, Speicherzugriff außerhalb des eigenen Moduls erfolgt über VN | * Beispiel: verteilter gemeinsamer Speicher, Speicherzugriff außerhalb des eigenen Moduls erfolgt über VN | ||
* Klassifikation nach Flynn | * Klassifikation nach Flynn | ||
- | * SISD: ein Befehlsstrom, ein Datenstrom (normaler PC) | + | * SISD: ein Befehlsstrom, ein Datenstrom (normaler PC), ein Befehl verarbeitet einen Datensatz (herkömmliche Rechnerarchitektur eines seriellen Rechners) |
- | * SIMD: ein Befehlsstrom, mehrere Datenströme (Cray, Vektorrechner) | + | * SIMD: ein Befehlsstrom, mehrere Datenströme (Cray, Vektorrechner), ein Befehl verarbeitet mehrere Datensätze, z.B. n Prozessoren führen zu einem Zeitpunkt den gleichen Befehl aber mit unterschiedlichen Daten aus |
- | * MISD: mehrere Befehlsströme, ein Datenstrom (praktisch keine) | + | * MISD: mehrere Befehlsströme, ein Datenstrom (praktisch keine), mehrere Befehle verarbeiten den gleichen Datensatz (diese Rechnerarchitektur ist nie realisiert worden) |
- | * MIMD: mehrere Befehlsströme, mehrere Datenströme | + | * MIMD: mehrere Befehlsströme, mehrere Datenströme (Merhprozessorsysteme und verteilte Systeme), unterschiedliche Befehle verarbeiten unterschiedliche Datensätze (dies ist das Konzept fast aller modernen Parallelrechner) |
* SPMD und MPMD | * SPMD und MPMD | ||
* MPMD: Multiple Program, multiple Data (jeder Prozessor führt sein eigenes Programm aus, Master verteilt Arbeit an Worker) | * MPMD: Multiple Program, multiple Data (jeder Prozessor führt sein eigenes Programm aus, Master verteilt Arbeit an Worker) | ||
* SPMD: Single Program, multiple Data (ein einziges Programm enthält Abschnitte für Master und Worker) | * SPMD: Single Program, multiple Data (ein einziges Programm enthält Abschnitte für Master und Worker) | ||
+ | * Vor-/Nachteile | ||
+ | * SPMD: größere Portabilität, einfacher zu verwalten, viele MPMD-Programme können als SPMD-Programme formuliert werden. | ||
+ | * MPMD: größere Flexibilität, schwieriger zu verwalten | ||
* Zugriffsweise auf den Speicher | * Zugriffsweise auf den Speicher | ||
* Uniform Memory Access: gleichförmiger Speicherzugriff (Tanzsaal-Architektur) | * Uniform Memory Access: gleichförmiger Speicherzugriff (Tanzsaal-Architektur) | ||
Zeile 54: | Zeile 57: | ||
* Cache-Only Memory Access: nur Cache-Zugriffe | * Cache-Only Memory Access: nur Cache-Zugriffe | ||
* No Remote Memory Access: nur lokale Speicherzugriffe (Grid, NOW) | * No Remote Memory Access: nur lokale Speicherzugriffe (Grid, NOW) | ||
+ | * Parallelisierungsstrategien | ||
+ | * Gebietszerlegung (engl. domain decomposition) | ||
+ | * Funktionale Aufteilung (engl. functional decomposition) | ||
+ | * Verteilung von Einzelaufträgen (engl. task farming) | ||
===== Statische Verbindungsnetze ===== | ===== Statische Verbindungsnetze ===== | ||
Zeile 120: | Zeile 127: | ||
* Kosten: n * T<sub>par</sub> | * Kosten: n * T<sub>par</sub> | ||
* Gesetz von Amdahl: S(n) = (s + p) / (s + p/n) | * Gesetz von Amdahl: S(n) = (s + p) / (s + p/n) | ||
+ | * geht von einem konstanten seriellen Anteil im Programm aus -> Grenze für Speedup, nicht-skalierbare Anwendungen | ||
+ | * Die Verbesserung der Leistung des Gesamtsystems durch Verbesserung einer Komponente ist limitiert durch den Umfang der Verwendung der Komponente. | ||
* Gesetz von Gustavson-Barsis: S<sub>s</sub>(n) = n + (1 - n) s | * Gesetz von Gustavson-Barsis: S<sub>s</sub>(n) = n + (1 - n) s | ||
+ | * geht von einer konstanten Laufzeit des seriellen Anteils im Programm aus -> skalierbare Anwendungen, können bei wachsendem Problem mit mehr Prozessoren ausgestattet werden | ||
+ | * Verbesserung der Genauigkeit/Problemgröße eines parallelen Verfahrens durch Steigerung der Prozessorzahl bei gleich bleibender Ausführungszeit | ||
+ | |||
+ | ===== Nachrichtenaustausch ===== | ||
+ | * Nachrichten werden zwischen den Prozessen verschickt, indem der Absender diese in einen Umschlag mit Empfänger und Sender verpackt und ggfs. mit einem Tag versieht | ||
+ | * Prozesserzeugung | ||
+ | * statisch: alle Prozesse werden vor der Ausführung spezifiziert | ||
+ | * dynamisch: neue Prozesse können während der Ausführung anderer Prozesse erzeugt werden (z.B. Master-Worker-Struktur) | ||
+ | * ein Prozess versendet eine Nachricht, indem er | ||
+ | * den/die Empfänger nennt | ||
+ | * den Wert (Adresse und Datentyp) bereitstellt | ||
+ | * optional die Nachricht mit einem Tag versieht | ||
+ | * ein Prozess empfängt eine Nachricht, indem er | ||
+ | * den Absender nennt (exakt oder beliebiger Absender) | ||
+ | * den Typ der Daten und die Zieladresse nennt | ||
+ | * optional einen Tag angibt (z.B. "dringend") | ||
+ | * synchroner/blockierender Nachrichtenaustausch | ||
+ | * erst Send oder erst Receive möglich | ||
+ | * Prozesse warten, bis die Nachricht übertragen wurde (und blockieren solange) | ||
+ | * asynchroner/nicht blockierender Nachrichtenaustausch | ||
+ | * Empfänger kann ein IRecv absetzen und später mit Wait schauen, ob die Nachricht angekommen ist | ||
===== Online-Kurs ===== | ===== Online-Kurs ===== | ||
Zeile 496: | Zeile 526: | ||
* Prozesse, die nicht in der Gruppe sind, erhalten ''MPI_COMM_NULL'' als Rückgabewert | * Prozesse, die nicht in der Gruppe sind, erhalten ''MPI_COMM_NULL'' als Rückgabewert | ||
* ''MPI_Comm_free(MPI_Comm *comm)'' zerstört einen Kommunikator | * ''MPI_Comm_free(MPI_Comm *comm)'' zerstört einen Kommunikator | ||
+ | |||
+ | ===== Links ===== | ||
+ | * [[http://www.rz.uni-karlsruhe.de/rz/hw/sp/online-kurs/PARALLELRECHNER/parallelr.html|Parallelrechner und Parallelisierungskonzepte (Universität Karlsruhe)]] | ||
+ | * [[http://pvs.uni-muenster.de/pvs/lehre/SS06/ps/folien/1-06Print.pdf|Parallele Systeme (Universität Münster)]] | ||
+ | * [[http://www.mathematik.uni-marburg.de/~loogen/Lehre/ws08/ParProg/Folien/ParProg0.ppt|Parallele Programmierung (Uni Marburg)]] | ||
===== ToDo ===== | ===== ToDo ===== | ||
* <del>Online-Learning anschauen</del> | * <del>Online-Learning anschauen</del> | ||
* externe Quellen suchen | * externe Quellen suchen | ||
- | * Gesetze Amdahl etc. | + | * <del>Gesetze Amdahl etc.</del> |
* MPI-Standard | * MPI-Standard | ||
* Architekturen verstehen (Shared Memory etc.) | * Architekturen verstehen (Shared Memory etc.) | ||
- | * Metriken verstehen, Metriken (Formeln) für neue Topologie entwickeln | + | * <del>Metriken verstehen, Metriken (Formeln) für neue Topologie entwickeln</del> |
- | * Leistungsbewertung (Gesetze Amdahl etc.) | + | * <del>Leistungsbewertung (Gesetze Amdahl etc.)</del> |
* <del>OpenMP eher allgemein (Kombination mit MPI)</del> | * <del>OpenMP eher allgemein (Kombination mit MPI)</del> | ||
* <del>OpenMP-Webcast</del> | * <del>OpenMP-Webcast</del> | ||
- | * Bibliotheken für Parallelrechner nur oberflächlich | + | * <del>Bibliotheken für Parallelrechner nur oberflächlich</del> |
* Lehrbrief korrigieren (falsche Parameter bei MPI-Funktionen) | * Lehrbrief korrigieren (falsche Parameter bei MPI-Funktionen) | ||
* <del>Metriken für Baum erstellen</del> | * <del>Metriken für Baum erstellen</del> |