Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
se:parallelrechner [2008-12-31 18:20] stefan |
se:parallelrechner [2014-04-05 11:42] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Parallelrechner ====== | ||
- | ===== Klausur ===== | ||
- | * Codeabschnitte verifizieren | ||
- | * Online-Learning anschauen | ||
- | * Programm als Lückentext | ||
- | * Verstehen der wichtigsten Funktionen (send/recv) | ||
- | * Architekturen verstehen (Shared Memory etc.) | ||
- | * Metriken verstehen, Metriken (Formeln) für neue Topologie entwickeln | ||
- | * Leistungsbewertung (Gesetze Amdahl etc.) | ||
- | * keine virtuellen Topologien | ||
- | * OpenMP eher allgemein (Kombination mit MPI) | ||
- | * Matrizenrechnung fliegt raushttp://wiki.stefan-macke.com/doku.php/se:parallelrechner | ||
- | * Bibliotheken für Parallelrechner nur oberflächlich | ||
- | * Leseempfehlung | ||
- | * Gesetze Amdahl etc. | ||
- | * MPI-Standard | ||
- | |||
- | Lehrbrief ist erlaubt! | ||
- | |||
- | ===== Online-Kurs ===== | ||
- | ==== Fundamentals ==== | ||
- | * Voraussetzungen für effektive Parallelisierung | ||
- | * schnelle Verbindung zwischen Prozessoren und Speicher und den einzelnen Prozessen, sowie schnelle Datenübertragung in und aus dem Speicher | ||
- | * Protokoll für Interprozesskommunikation | ||
- | * die Algorithmen müssen parallelisierbar sein und in kleine Teilprobleme aufgeteilt werden können | ||
- | * Mechanismus zur Verteilung der Aufgaben an die Prozesse | ||
- | * Computerarchitekturen nach Flynn 1972 | ||
- | * Single Instruction Single Data (SISD) | ||
- | * Multiple Instruction Single Data (MISD) | ||
- | * Single Instruction Multiple Data (SIMD) | ||
- | * 1 CPU zur Steuerung und mehrere CPUs mit eigenem Speicher | ||
- | * Steuer-CPU sendet Broadcasts und die anderen CPU rechnen, abhängig von konditionalen Bedingungen im Code | ||
- | * Nachteil: viele CPUs bleiben idle | ||
- | * Multiple Instruction Multiple Data (MIMD) | ||
- | * jede CPU hat übernimmt sowohl Steuerung als auch Berechnung | ||
- | * Programme werden von jeder CPU unabhängig von den anderen ausgeführt -> asynchron | ||
- | * 3 Typen: shared memory (CPUs teilen sich gemeinsamen Speicher), distributed memory (Knoten, die zusammen ein Problem lösen) und shared memory processing (Kombination der beiden vorherigen) | ||
- | * Shared-Memory MIMD | ||
- | * Verbindung zwischen CPUs und Speicher via Bus oder Switch | ||
- | * {{:se:shared_mimd.jpg|}} | ||
- | * CPUs haben zusätzlich internen Speicher: Register und Cache | ||
- | * Problem bei Verwendung von Cache: Variablen haben nach Änderung durch anderen Prozess vielleicht falschen Wert -> Protokoll wird benötigt zum Ermitteln solcher Fälle |