Sloučit řadit

sloučit řadit paralelizuje dobře vzhledem k použití metody divide-and-conquer. V průběhu let bylo vyvinuto několik různých paralelních variant algoritmu. Některé algoritmy paralelního sloučení se silně vztahují k sekvenčnímu algoritmu sloučení shora dolů, zatímco jiné mají jinou obecnou strukturu a používají metodu sloučení K-way.

sloučit řazení s paralelní rekurzíedit

postup sekvenčního řazení lze popsat ve dvou fázích, rozdělovací fázi a fázi sloučení., První se skládá z mnoha rekurzivních hovorů, které opakovaně provádějí stejný proces dělení, dokud nejsou následující triviálně tříděny (obsahující jeden nebo žádný prvek). Intuitivním přístupem je paralelizace těchto rekurzivních hovorů. Následující pseudokód popisuje druh korespondence s paralelní rekurze pomocí vidlice a připojit klíčová slova:

Tento algoritmus je triviální modifikace sekvenční verze a není dobře paralelizovat. Proto jeho zrychlení není příliš působivé., To má rozsah Θ ( n ) pro {\displaystyle \Theta (n)} , což je pouze zlepšení Θ ( log ⁡ n ) {\displaystyle \Theta (\log n)} ve srovnání se sekvenční verze (viz Úvod do Algoritmů). To je způsobeno především metodou sekvenčního sloučení, protože je to úzká oblast paralelních poprav.

sloučit s paralelním sloučenímedit

Hlavní článek: sloučit algoritmus § paralelní sloučení

lepší paralelismu lze dosáhnout pomocí algoritmu paralelního sloučení. Cormen et al. prezentujte binární variantu, která sloučí dvě seřazené subsekvence do jedné seřazené výstupní sekvence.,

v jedné ze sekvencí (delší, pokud je nerovnoměrná délka) je vybrán prvek středního indexu. Jeho poloha v druhé sekvenci je určena tak, aby tato sekvence zůstala tříděna, pokud by byl tento prvek vložen do této polohy. Člověk tedy ví, kolik dalších prvků z obou sekvencí je menší a lze vypočítat polohu vybraného prvku ve výstupní sekvenci. Pro částečné sekvence takto vytvořených menších a větších prvků je algoritmus sloučení opět proveden paralelně, dokud není dosaženo základního případu rekurze.,

následující pseudokód ukazuje modifikovanou metodu paralelního sloučení pomocí algoritmu paralelního sloučení (přijatého od Cormen et al.).

aby bylo možné analyzovat vztah opakování pro nejhorší případ rozpětí, rekurzivní volání parallelMergesort muset být začleněny pouze jednou, vzhledem k jejich paralelní provádění, získání

podrobné informace o složitosti paralelní sloučit postup, viz Sloučit algoritmus.,

řešení tohoto opakování je dán tím,

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

Paralelní multiway sloučit sortEdit

zdá se, Že svévolné omezení merge sort algoritmy pro binární sloučit metody, protože tam jsou obvykle p > 2 procesory k dispozici. Lepším přístupem může být použití metody sloučení K-way, zobecnění binárního sloučení, ve kterém jsou řazené sekvence K {\displaystyle K} sloučeny dohromady., Tato varianta sloučení je vhodná pro popis algoritmu třídění na kočárku.

Základní IdeaEdit

paralelní multiway mergesort proces na čtyři procesory t 0 {\displaystyle t_{0}} k t 3 {\displaystyle t_{3}} .

Multisequence selectionEdit

PseudocodeEdit

Níže, kompletní pseudokódu paralelní multiway merge sort algoritmus je uveden., Předpokládáme, že před a po výběru multisekvence existuje bariérová synchronizace, takže každý procesor může správně určit rozdělovací prvky a sekvenční oddíl.

AnalysisEdit

praktická adaptace a aplikaceedit

algoritmus Multiway merge sort je velmi škálovatelný díky své vysoké schopnosti paralelizace, což umožňuje použití mnoha procesorů. Díky tomu je algoritmus životaschopným kandidátem pro třídění velkého množství dat, jako jsou data zpracovaná v počítačových klastrech., Také, protože v takových systémech paměť obvykle není omezujícím zdrojem, nevýhoda prostorové složitosti sloučení je zanedbatelná. V takových systémech se však stávají důležitými další faktory, které se při modelování na kočárku nezohledňují. Tady tyto aspekty musí být považovány za: Paměťová hierarchie, když data nesedí do procesorů paměť nebo komunikační režii výměnu dat mezi procesory, které by se mohly stát překážkou, když data již nemohou být přístupné prostřednictvím sdílené paměti.

Sanders et al., představil ve své knize hromadné synchronní paralelní algoritmus pro víceúrovňové multiway mergesort, která rozděluje p {\displaystyle p} procesory do r {\displaystyle r} skupin o velikosti p ‚{\displaystyle p‘} . Všechny procesory nejprve třídí lokálně. Na rozdíl od single level multiway mergesort jsou pak tyto sekvence rozděleny do R {\displaystyle R} částí a přiřazeny příslušným skupinám procesorů. Tyto kroky se v těchto skupinách opakují rekurzivně. Tím se snižuje komunikace a zejména se vyhýbá problémům s mnoha malými zprávami., Hierarchická struktura základní reálné sítě může být použita k definování skupin procesorů (např. regály, klastry,…).

Další VariantsEdit

Sloučit druh byl jedním z prvních, třídící algoritmy, kde optimální urychlení bylo dosaženo, s Richard Cole pomocí chytrý subsampling algoritmus, aby zajistily, O(1) sloučení. Jiné sofistikované algoritmy paralelního třídění mohou dosáhnout stejných nebo lepších časových hranic s nižší konstantou., Například, v roce 1991 David Pravomoci popsal paralelní quicksort (a související radix sort), která může pracovat v O(log n) času na CRCW parallel random access machine (PRAM) s n procesory provedením partitioning implicitně. Pravomoci dále ukazuje, že pipeline verze Dávkovače je Bitonic Mergesort na O((log n)2) čas na motýla třídící síť je v praxi rychlejší, než jeho O(log n) druhy v KOČÁRKU, a on poskytuje podrobné diskuse o skryté režijní náklady ve srovnání radix a paralelní řazení.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Přejít k navigační liště