Sie sind auf Seite 1von 3

Ein ist ein Algorithmus, welcher ein Problem der Komplexittsklasse NC (Nicks Class nach Nick Pippenger) lsen

bzw. entscheiden kann. Jeder parallele Algorithmus kann auch sequentiell abgearbeitet werden. Umgekehrt sind auch viele bekannte sequentielle Algorithmen parallelisierbar, so z. B. einige bekannte Sortieralgorithmen wie Bubblesort oder Quicksort. Es gehrt jedoch zu den offenen Fragen der theoretischen Informatik ob alle Algorithmen, welche Probleme der Klassen P oder NP entscheiden, auch parallelisierbar sind. Fr viele dieser Algorithmen wurde noch kein entsprechender paralleler Algorithmus gefunden, so dass die meisten Forscher heute davon ausgehen, dass dieses nicht der Fall ist. Zur Untersuchung paralleler Algorithmen verwendet man in der Regel ein spezielles Maschinenmodell, das von der Registermaschine abgeleitet ist, die PRAM (Parallel Random Access Machine). Fr die Bewertung serieller Algorithmen ist ein allgemein anerkanntes Modell die random access machine (RAM). Die RAM verfgt ber eine Recheneinheit und einen beliebig groen Speicher, auf dessen Inhalt wahlfrei zugegriffen werden kann. Alle Basisoperationen knnen in O(1) TIME berechnet werden. Fr parallele Algorithmen hingegen gibt es verschiedene Modelle, die wesentlich abhngiger vom konkreten Rechner sind. Einige (spezielle) Kriterien fr Modelle sind: Geringe Anzahl leistungsfhiger Prozessoren Hohe Anzahl einfacher Prozessoren Verteilte Systeme (nicht Gegenstand der Vorlesung, siehe Rechnerarchitektur)

Bei der Betrachtung von parallelen Algorithmen treten aber auch neue Fragen auf, die sich fr den seriellen Fall nicht ergeben: _ Computational Concurrency: Wie stark lsst sich eine Problem parallelisieren? Bringt der Einsatz weiterer Prozessoren eine weitere Beschleunigung? _ Processor Allocation: Welcher Prozessor soll wann welche Operation ausfhren? _ Scheduling: Welche Operationen knnen parallel ausgefhrt werden? Welche Operationen hngen von Ergebnissen anderer Operationen ab? _ Communication: Wie kommen die Ergebnisse von einem Prozessor zu den anderen Prozessoren? _ Synchronization: Arbeiten alle Prozessoren unabhngig voneinander oder arbeiten sie alle im gleichen Rythmus? Wie synchronisieren sie die Prozessoren?

Warum Parallelverarbeitung Geschwindigkeitsteigerung: p Computer, die gemeinsam an einem Problem arbeiten, lsen es bis zu p mal so schnell. Aber, viele Kche verderben den Brei gute Koordinationsalgorithmen Energieersparnis: Zwei Prozessoren mit halber Taktfrequenz brauchen weniger als eine voll getakteter Prozessor. (LeistungSpannung Taktfrequenz) Speicherbeschrnkungen von Einzelprozessoren Kommunikationsersparnis: wenn Daten verteilt anfallen kann man sie auch verteilt (vor)verarbeiten
1.1.2 Netzwerkmodell

Das Netzwerkmodell beschreibt durch einem ungerichteten Graphen eine Menge von Prozessoren (= Knoten) und deren Vernetzung (= Kanten) untereinander. Die Prozessoren verfgen ber einen lokalen Speicher und tauschen ihre Daten mit den Operationen receive und send aus.

1.1.3 Synchrones Shared-Memory-Modell Eine direkte Erweiterung der random access machine ist die parallel random access machine (PRAM), bei der mehrere RAMs ber einen unbegrenzt groen, gemeinsamen Speicher (globaler Speicher oder shared memory) verfgen, den sie unabhngig voneinander in einer Zeiteinheit lesen und verndern knnen. Dabei wird in unserem abstrakten Modell die Zugriffszeit auf den globalen Speicher vernachlssigt. Ein Forscherteam in Ontario, Kanada, hat fr spezielle Probleme und Algorithmen die Zugriffszeit mitbercksichtigt und keine wesentlich anderen Ergebisse erhalten. Untereinander sind die Prozessoren nicht verbunden, so dass jegliche Kommunikation ber den globalen Speicher erfolgen muss. Die Prozessoren arbeiten mit einem gemeinsamen Zeitsignal (synchron), d. h. jede Anweisung wird von allen Prozessoren zum gleichen Zeitpunkt ausgefhrt. Abbildung 1.4 todo: einarbeiten: PRAM bercksichtigt Zuordnung der Aufgaben an die Prozessoren und Kommunikation der Prozessoren untereinander. Der Zugriff auf den globalen Speicher erfolgt mit den Operationen globalRead(A;x) zum Lesen der globalen Speicherzelle A in die lokale Speicherzelle x und globalWrite(x;A) zum Schreiben der lokalen Speicherzelle x in die globale Speicherzelle A. Zur Vereinfachung der Schreibweise verwenden wir groe Buchstaben fr globale Speicherzellen und kleine Buchstaben fr lokale Speicherzellen, so dass man fr einen globalRead x := A und fr einen globalWrite A := x schreiben kann. Beim simultanen Zugriff auf den globalen Speicher kann es zu Konflikten kommen, wenn mehrere Prozessoren auf die gleiche Speicherzelle zugreifen. Man unterscheidet die verschiedenen PRAMs anhand der Art, welche Zugriffe sie zulassen: _ EREW (exclusive read and exclusive write): eine Speicherzelle kann zu einem Zeitpunkt nur von einem Prozessor gelesen oder beschrieben werden. _ CREW (concurrent read and exclusive write): eine Speicherzelle kann zu einem Zeilpunkt von beliebig vielen Prozessoren gelesen, aber nur von einem Prozessor beschrieben werden.

_ common CRCW (concurrent read and concurrent write) : eine Speicherzelle kann zu einem Zeitpunkt von beliebig vielen Prozessoren gelesen und beschrieben werden. Beim Schreibzugriff mssen alle Prozessoren den gleichen Wert schreiben. _ arbitrary CRCW: eine Speicherzelle kann zu einem Zeitpunkt von beliebig vielen Prozessoren gelesen und beschrieben werden. Wenn die Prozessoren unterschiedliche Werte schreiben, kann der tatschlich geschriebene Wert einer der Werte oder die Summe/Minumim/ Maximum der Werte sein. _ priority CRCW: eine Speicherzelle kann zu einem Zeitpunkt von beliebig vielen Prozessoren gelesen und beschrieben werden. Welcher Wert in die Speicherzelle tatschlich geschrieben wird, hngt von einer vorgegebenen Priorisierung der Prozessoren ab; z. B. knnte der Wert des Prozessors mit der kleinsten Prozessornummer geschrieben werden. todo: Allgemeine Idee des Binrbaumparadigmas beschreiben Gegeben sei eine Folge (xi)i2N von n Zahlen. Als Prfixsumme S des k. Gliedes bezeichnet man die Summe aller Glieder bis zum k. Glied. Die Prfixsumme des n. Gliedes ist die Summe aller Folgenglieder.