Merge sort (Deutsch)

Merge sort parallelisiert gut durch die Verwendung der Divide-and-Conquer-Methode. Im Laufe der Jahre wurden verschiedene parallele Varianten des Algorithmus entwickelt. Einige parallele Merge-Sortieralgorithmen hängen stark mit dem sequentiellen Top-Down-Merge-Algorithmus zusammen, während andere eine andere allgemeine Struktur haben und die K-Way-Merge-Methode verwenden.

Merge sort mit parallel recursionEdit

Die sequentielle Merge sort Prozedur kann in zwei Phasen beschrieben werden, die Divide Phase und die Merge Phase., Der erste besteht aus vielen rekursiven Aufrufen, die wiederholt denselben Teilungsprozess ausführen, bis die Untersequenzen trivial sortiert sind (mit einem oder keinem Element). Ein intuitiver Ansatz ist die Parallelisierung dieser rekursiven Aufrufe. Der folgende Pseudocode beschreibt die Zusammenführungssortierung mit paralleler Rekursion unter Verwendung der Fork – und Join-Schlüsselwörter:

Dieser Algorithmus ist die triviale Modifikation der sequentiellen Version und parallelisiert nicht gut. Daher ist seine Beschleunigung nicht sehr beeindruckend., Es hat eine Spannweite von Θ (n ) {\displaystyle \Theta ( n)} , was nur eine Verbesserung von Θ (log ⁡ n ) {\displaystyle \Theta (\log n)} im Vergleich zur sequentiellen Version darstellt (siehe Einführung in Algorithmen). Dies ist hauptsächlich auf die sequentielle Zusammenführungsmethode zurückzuführen, da es sich um den Engpass der parallelen Ausführungen handelt.

Merge sort mit parallel Mergedit

Hauptartikel: Merge algorithm § Parallel merge

Bessere Parallelität kann mit einem Parallel Merge Algorithmus erreicht werden. Cormen et al. präsentieren Sie eine binäre Variante, die zwei sortierte Untersequenzen zu einer sortierten Ausgabesequenz zusammenführt.,

In einer der Sequenzen (die längere, wenn ungleiche Länge) wird das Element des mittleren Index ausgewählt. Seine Position in der anderen Sequenz wird so bestimmt, dass diese Sequenz sortiert bleibt, wenn dieses Element an dieser Position eingefügt würde. Somit weiß man, wie viele andere Elemente aus beiden Sequenzen kleiner sind und die Position des ausgewählten Elements in der Ausgabesequenz berechnet werden kann. Für die so erzeugten Teilsequenzen der kleineren und größeren Elemente wird der Mergealgorithmus erneut parallel ausgeführt, bis der Basisfall der Rekursion erreicht ist.,

Der folgende Pseudocode zeigt die modifizierte Sortiermethode für parallele Zusammenführungen unter Verwendung des parallelen Zusammenführungsalgorithmus (übernommen von Cormen et al.).

Um eine Wiederholungsbeziehung für die Worst-Case-Spanne zu analysieren, müssen die rekursiven Aufrufe von parallelMergesort aufgrund ihrer parallelen Ausführung nur einmal eingebunden werden, wobei

Detaillierte Informationen zur Komplexität der parallelen Zusammenführungsprozedur erhalten Sie unter Zusammenführungsalgorithmus.,

Die Lösung dieser Wiederholung ist gegeben durch

T ∞ sort = Θ ( log ⁡ ( n 3 ) {\textstyle T_{\infty }^{\text{sort}}=\Theta \left(\log(n)^{3}\right)} .

Parallel multiway merge sortEdit

Es scheint willkürlich, die Merge-Sortieralgorithmen auf eine binäre Merge-Methode zu beschränken, da normalerweise p > 2 Prozessoren verfügbar sind. Ein besserer Ansatz könnte die Verwendung einer K-Way-Merge-Methode sein, einer Verallgemeinerung der binären Zusammenführung, bei der k {\displaystyle k} sortierte Sequenzen zusammengeführt werden., Diese Zusammenführungsvariante eignet sich gut, um einen Sortieralgorithmus auf einem KINDERWAGEN zu beschreiben.

Basic IdeaEdit

Die parallele multiway mergesort Verfahren auf vier Prozessoren, t 0 {\displaystyle t_{0}} t 3 {\displaystyle t_{3}} .

Multisequence selectionEdit

PseudocodeEdit

Unten ist der vollständige Pseudocode des parallelen Mehrwege-Merge-Sortieralgorithmus angegeben., Wir gehen davon aus, dass es vor und nach der Multisequenzauswahl eine Barriere-Synchronisation gibt, so dass jeder Prozessor die Spaltelemente und die Sequenzpartition richtig bestimmen kann.

AnalysisEdit

Praktische Anpassung und Anwendungedit

Der Mehrweg – Merge-Sortieralgorithmus ist durch seine hohe Parallelisierungsfähigkeit, die den Einsatz vieler Prozessoren ermöglicht, sehr skalierbar. Dies macht den Algorithmus zu einem praktikablen Kandidaten für das Sortieren großer Datenmengen, wie sie in Computerclustern verarbeitet werden., Da der Speicher in solchen Systemen normalerweise keine einschränkende Ressource ist, ist der Nachteil der Platzkomplexität dieser Art vernachlässigbar. In solchen Systemen werden jedoch andere Faktoren wichtig, die bei der Modellierung auf einem KINDERWAGEN nicht berücksichtigt werden. Hierbei müssen folgende Aspekte berücksichtigt werden: Speicherhierarchie, wenn die Daten nicht in den Prozessorcache passen, oder der Kommunikationsaufwand für den Datenaustausch zwischen Prozessoren, der zu einem Engpass werden kann, wenn die Daten nicht mehr über den gemeinsam genutzten Speicher abgerufen werden können.

Sanders et al., haben in ihrem Papier einen Bulk synchron parallel Algorithmus für Multilevel Multiway Mergesort vorgestellt, der p {\displaystyle p} Prozessoren in r {\displaystyle r} Gruppen der Größe p ‚{\displaystyle p‘} unterteilt . Alle Prozessoren sortieren zuerst lokal. Im Gegensatz zu Single Level Multiway Mergesort werden diese Sequenzen dann in r {\displaystyle r} Teile partitioniert und den entsprechenden Prozessorgruppen zugewiesen. Diese Schritte werden in diesen Gruppen rekursiv wiederholt. Dies reduziert die Kommunikation und vermeidet insbesondere Probleme mit vielen kleinen Nachrichten., Die hierarchische Struktur des zugrunde liegenden realen Netzwerks kann verwendet werden, um die Prozessorgruppen zu definieren (z. B. Racks, Cluster,…).

Weitere VariantsEdit

Merge-sort-war einer der ersten algorithmen zur Sortierung, wo optimale Beschleunigung erreicht wurde, mit Richard Cole mit einem cleveren subsampling Algorithmus zu gewährleisten O(1) merge. Andere ausgeklügelte parallele Sortieralgorithmen können die gleichen oder besseren Zeitgrenzen mit einer niedrigeren Konstante erreichen., Zum Beispiel beschrieb David Powers 1991 einen parallelisierten Quicksort(und eine verwandte Radix-Sortierung), der in O (Log n) – Zeit auf einer CRCW-parallelen Random-Access-Maschine (PRAM) mit n Prozessoren arbeiten kann, indem er implizit partitioniert. Powers zeigt weiter, dass eine Pipeline-Version von Batchers Bitonic Mergesort zu O ((log n)2) – Zeit in einem Schmetterlingssortiernetzwerk in der Praxis tatsächlich schneller ist als seine O (log n) – Sortierung in einem Kinderwagen, und er bietet eine detaillierte Diskussion der versteckten Gemeinkosten im Vergleich zur Radix-und Parallelsortierung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Zur Werkzeugleiste springen