Merge sort (Română)

Merge sort parallelizes bine datorită utilizării metodei divide-and-conquer. Mai multe variante paralele diferite ale algoritmului au fost dezvoltate de-a lungul anilor. Unii algoritmi de sortare a îmbinărilor paralele sunt puternic legați de algoritmul secvențial de îmbinare de sus în jos, în timp ce alții au o structură generală diferită și folosesc metoda de îmbinare K-way.

Merge sort cu paralel recursionEdit

procedura secvențială merge sort poate fi descrisă în două faze, faza de divizare și faza de îmbinare., Primul constă din multe apeluri recursive care efectuează în mod repetat același proces de divizare până când subsecțiunile sunt sortate trivial (conținând unul sau niciun element). O abordare intuitivă este paralelizarea acestor apeluri recursive. Următorul pseudocod descrie merge sort cu recursivitate paralel folosind furca și se alăture cuvinte cheie:

acest algoritm este modificarea trivială a versiunii secvențiale și nu paraleliza bine. Prin urmare, accelerarea sa nu este foarte impresionantă., Acesta are o durata de Θ ( n ) {\displaystyle \Theta (n)} , care este doar o îmbunătățire a Θ ( log ⁡ n ) {\displaystyle \Theta (\log n)}, comparativ cu secvențiale versiune (vezi Introducere în Algoritmi). Acest lucru se datorează în principal metodei de îmbinare secvențială, deoarece este blocajul execuțiilor paralele.

Merge sort with parallel mergingEdit

Articol principal: Merge algorithm § Parallel merge

o mai bună paralelism poate fi realizat folosind un algoritm de îmbinare paralelă. Cormen și colab. prezentați o variantă binară care îmbină două sub-secvențe sortate într-o singură secvență de ieșire sortată.,

într-una din secvențe (cea mai lungă dacă este o lungime inegală), este selectat elementul indicelui de mijloc. Poziția sa în cealaltă secvență este determinată astfel încât această secvență să rămână sortată dacă acest element ar fi introdus în această poziție. Astfel, se știe câte alte elemente din ambele secvențe sunt mai mici și se poate calcula poziția elementului selectat în secvența de ieșire. Pentru secvențele parțiale ale elementelor mai mici și mai mari create în acest fel, algoritmul de îmbinare este din nou executat în paralel până când se atinge cazul de bază al recursivității.,

următorul pseudocod arată metoda de sortare paralelă modificată folosind algoritmul de îmbinare paralelă (adoptat de la Cormen et al.).pentru a analiza o relație de recurență pentru cel mai rău caz, apelurile recursive ale parallelMergesort trebuie încorporate o singură dată datorită execuției lor paralele, obținând

pentru informații detaliate despre complexitatea procedurii de îmbinare paralelă, a se vedea Merge algoritm.,

soluție de această recurență este dat de

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

Paralel multiway merge sortEdit

Se pare arbitrară a restricționa un fel de îmbinare algoritmi pentru un binar merge metoda, deoarece există, de obicei, p > 2 procesoare disponibile. O abordare mai bună poate fi utilizarea unei metode de îmbinare K-way, o generalizare a fuziunii binare, în care secvențele sortate k {\displaystyle k} sunt îmbinate împreună., Această variantă de îmbinare este potrivită pentru a descrie un algoritm de sortare pe un PRAM.

Bază IdeaEdit

paralel multiway mergesort proces pe patru procesoare t 0 {\displaystyle t_{0}} pentru t 3 {\displaystyle t_{3}} .

Multisequence selectionEdit

PseudocodeEdit

mai Jos, completați pseudocod paralel multiway un fel de îmbinare algoritm este dat., Presupunem că există o sincronizare barieră înainte și după selectarea multisecvență, astfel încât fiecare procesor poate determina elementele de divizare și partiția de secvență în mod corespunzător.

AnalysisEdit

Practice de adaptare și applicationEdit

multiway algoritmul merge sort este foarte scalabil prin gradul ridicat de paralelizare capacitate, care permite utilizarea de mai multe procesoare. Acest lucru face ca algoritmul să fie un candidat viabil pentru sortarea unor cantități mari de date, cum ar fi cele procesate în clustere de calculatoare., De asemenea, deoarece în astfel de sisteme memoria nu este de obicei o resursă limitativă, dezavantajul complexității spațiului de îmbinare este neglijabil. Cu toate acestea, alți factori devin importanți în astfel de sisteme, care nu sunt luați în considerare la modelarea pe un cărucior. Aici, următoarele aspecte trebuie să fie luate în considerare: Memorie ierarhie, atunci când datele nu se încadrează în procesoare cache, sau comunicarea aeriene de schimbul de date între procesoare, care ar putea deveni o piedică atunci când datele nu mai pot fi accesate prin memorie partajată.Sanders și colab., am prezentat în lucrarea lor o mare parte sincron paralel algoritm pentru mai multe niveluri multiway mergesort, care împarte p {\displaystyle p} procesoare în r {\displaystyle r} grupuri de dimensiune p ‘{\displaystyle p’} . Toate procesoarele sortează mai întâi local. Spre deosebire singur nivel multiway mergesort, aceste secvențe sunt apoi împărțit în r {\displaystyle r} părți și atribuite corespunzătoare procesor grupuri. Acești pași se repetă recursiv în aceste grupuri. Acest lucru reduce comunicarea și, în special, evită problemele cu multe mesaje mici., Structura ierarhică a rețelei reale de bază poate fi utilizată pentru a defini grupurile de procesoare (de exemplu, rafturi, clustere,…).Merge sort a fost unul dintre primii algoritmi de sortare în care s-a obținut o viteză optimă, Richard Cole folosind un algoritm inteligent de subsampling pentru a asigura o(1) îmbinare. Alți algoritmi sofisticați de sortare paralelă pot atinge aceleași limite de timp sau mai bune cu o constantă mai mică., De exemplu, în 1991 David Competențele descrise un paralelizată quicksort (și legate radix sort), care poate funcționa în O(log n) pe un CRCW paralel cu acces aleatoriu mașină (PRAM) cu n procesoare prin efectuarea de partiționare implicit. Puteri în continuare arată că o asamblare versiune de Dozator este Bitonic Mergesort la O((log n)2) timp pe un fluture rețea de sortare este, în practică, de fapt, mai repede decât a lui O(log n) felul pe un CĂRUCIOR, și el oferă discuție detaliată a ascuns generale în comparație, radix și paralel de sortare.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Sari la bara de unelte