Basics Flashcards
Was ist Parallelismus?
Zu einem Zeitpunkt wird mehr als ein Befehl ausgeführt und/oder mehr als ein Paar Operanden verknüpft
Was ist das Ziel von Parallelismus?
Ziel ist es die zu bearbeitende Aufgabe möglichst schnell zu lösen
Was sind mögliche Probleme bei Parallelismus?
Die Unterteilung der Aufgabe, sowie Overhead für Koordination und Kommunikation
Warum nutzt man Parallelverarbeitung?
Für Anwendungen mit hohen Anforderungen an die Rechenleistung, insbesondere bei Simulationen und wirtschaftlich ist es besser billige standard CPUs zu verwenden anstatt speziell entwickelte
Was besagt Moores Law?
Die Rechenleistung von Prozessoren verdoppelt sich alle 18 Monate
Was sind parallele Programme?
Ein paralleles Programm kann als eine teilweise geordnete Menge von Anweisungen betrachtet werden, deren Reihenfolge sich aus den Abhängigkeiten zwischen den Anweisungen ergibt
Wann können Anweisungen parallel ausgeführt werden?
Wenn es zwischen den Anweisungen keine Abhängigkeiten gibt
Was ist Nebenläufigkeit?
Die Anweisungen werden gleichzeitig in mehreren Verarbeitungseinheiten ausgeführt
Was ist Pipelining?
Die Aufgabe ist in sequentielle Phasen zerlegt und unterschiedliche Phasen verschiedener Befehle werden gleichzeitig ausgeführt
Auf welchen Programmierebenen kann Parallelismus angewendet werden?
Es gibt keine konsistente Klassifikation aber mögliche Beispiele sind Maschinenbefehle, Anweisungen und Schleifen, sowie Datenstrukturen
Was ist Datenparallelismus?
Datenparallelismus beschreibt eine Gebietsaufteilung, wie z.B. die sequentielle Berechnung der Kraft aller Sterne in einem gewissen Gebiet
Was ist Taskparallelismus?
Taskparallelismus beschreibt eine Aufgabenaufteilung. Zum Beispiel die zeitgleiche Berechnung von Vorverarbeitung, Berechnung, Nachbearbeitung und Visualisierung
Was ist explicit parallelism?
Datenaustausch, Kommunikation und Synchronisation werden explizit vom Programmierer programmiert. Dieser hat volle Kontrolle
Was ist implicit parallelism?
Implicit parallelism erfolgt durch den Compiler, automatisch oder durch Direktive. Der Compiler generiert Kommunikationscode
Welche Ebenen hat die Systemsicht zur Parallelität?
Programm Level (Job Level) Process Level (Task Level) Block Level Instruction Level Sub-operation Level
Wie wird die Granularität festgelegt und wozu dient sie?
Die Granularität ist festgelegt durch das Verhältnis zwischen Berechnung und Kommunikation. Sie entspricht der Länge der parallelen Aufgabe in einer Teilreihenfolge und beeinflusst den erreichbaren Speedup. Darüber hinaus bestimmt sie die Anforderungen an den Parallelrechner
Welche Granularitäten gibt es und auf welchem Level finden diese statt?
- Coarse-grainded: Programm und Prozess Level
- Mid-grained: Block Level
- Fine-grained: Instruction Level
Welche Abhängigkeiten gibt es?
True/Flow Dependence
Anti Dependence
Output Dependence
Wann besteht eine True/Flow Dependence?
Eine True/Flow Dependence besteht, wenn eine Anweisung lesend auf das Ergebnis einer vorangegangenen Anweisung zugreift, die dort geschrieben wurde
Wann besteht eine Anti Dependence?
Eine Anti Dependence besteht, wenn eine Anweisungen einen Wert schreibt, auf den in der vorangegangenen Anweisung lesend zugegriffen wurde
Wann besteht eine Output Dependence?
Wenn beide Anweisungen in die gleiche Variable schreiben
Welche Dependences können umgangen werden und wie?
Die Anti und Output Dependence können immer durch konsequente Umbenennung von Variablen beseitigt werden
Was ist der Zusammenhang zwischen Datenabhängigkeiten und Synchronisation?
Zwei Anweisungen mit einer Datenabhängigkeit können auf verschiedene Threads verteilt werden, wenn eine korrekte Synchronisation (z.B. durch signal/wait oder Nachrichtenaustausch) durchgeführt wird
Welche Kriterien sind nötig für die Klassifikation von Rechnerarchitekturen nach Flynn?
Wie viele instruction streams und wie viele data streams bearbeitet der Rechner zu einem bestimmten Zeitpunkt
Welche möglichen Klassen gibt es nach Flynn?
SISD: Einprozessorrechner
MIMD: Mehrprozessorrechner
SIMD: Vektorrechner, GPUs
MISD: Existiert nicht
Welche MIMD Computer Klassen gibt es?
NORMA: No Remote Memory Access
UMA: Uniform Memory Access
NUMA: Nonuniform Memory Access
Was sind die Eigenschaften von NORMA?
- Nachrichtengekoppelte Systeme
- Verteilter Speicher, verteilter Adressraum
- Kommunikation über Nachrichten
- Distributed Memory Systeme (DMM)
- Gute Skalierbarkeit
Was sind die Eigenschaften von UMA?
- Speichergekoppelte Systeme
- Globaler Speicher, gemeinsamer Adressraum
- Alle Prozessoren greifen in gleicher Weise und in gleicher Zeit auf den Speicher zu
- Kommunikation und Synchronisation über gemeinsamen Speicher
- Symmetrische Multiprozessoren (SMP), Multicore-CPUs
- Begrenzte Skalierbarkeit
Was sind die Eigenschaften von NUMA?
- Speichergekoppelte Systeme
- Verteilter Speicher, gemeinsamer Adressraum
- Zugriff auf lokalen Speicher schneller als auf entfernten
- Distributed Shared Memory Systeme (DSM)
- Kombiniert gemeinsamen Speicher mit Skalierbarkeit