Flet sort

Flet sort paralleliserer godt på grund af brugen af divide-and-con .uer-metoden. Flere forskellige parallelle varianter af algoritmen er blevet udviklet gennem årene. Nogle parallelle Flet sorteringsalgoritmer er stærkt relateret til den sekventielle top-do .n Flet algoritme, mens andre har en anden generel struktur og bruger K-wayay Flet-metoden.

Flet sortering med parallel rekursionedit

den sekventielle Flet sortering procedure kan beskrives i to faser, delefasen og flet fase., Den første består af mange rekursive opkald, der gentagne gange udfører den samme opdelingsproces, indtil efterfølgerne er trivielt sorteret (indeholdende et eller intet element). En intuitiv tilgang er paralleliseringen af disse rekursive opkald. Følgende pseudokode beskriver fusionssorteringen med parallel rekursion ved hjælp af gaffel-og sammenføjningsnøgleord:

denne algoritme er den trivielle ændring af den sekventielle version og paralleliserer ikke godt. Derfor er dens speedup ikke særlig imponerende., Det har et spændvidde på The ( n ) {\displaystyle \Theta (n)} , som kun er en forbedring af {(log ⁡ n) {\displaystyle \Theta (\log n)} sammenlignet med den sekventielle version (se Introduktion til algoritmer). Dette skyldes hovedsageligt den sekventielle fusionsmetode, da det er flaskehalsen i de parallelle henrettelser.

Flet sortering med parallel mergingEdit

Hovedartikel: Flet algoritme Parallel Parallel Flet

bedre parallelisme kan opnås ved at bruge en parallel Flet algoritme. Cormen et al. præsenter en binær variant, der fusionerer to sorterede undersekvenser i en sorteret outputsekvens.,

i en af sekvenserne (jo længere en hvis ulige længde) vælges elementet i mellemindekset. Dens position i den anden sekvens bestemmes på en sådan måde, at denne sekvens forbliver sorteret, hvis dette element blev indsat i denne position. Således ved man, hvor mange andre elementer fra begge sekvenser er mindre, og placeringen af det valgte element i outputsekvensen kan beregnes. For de delvise sekvenser af de mindre og større elementer, der er oprettet på denne måde, udføres fusionsalgoritmen igen parallelt, indtil rekursionens basistilfælde er nået.,

følgende pseudokode viser den modificerede metode til sortering af parallel fusion ved hjælp af den parallelle fusionsalgoritme (vedtaget fra Cormen et al.).

for at analysere et fornyet forhold til de værste tilfælde span, de rekursive kald af parallelMergesort nødt til at være indarbejdet kun én gang på grund af deres parallelle gennemførelse, opnåelse af

For yderligere information om kompleksiteten af de parallelle fusionere procedure, se Merge algoritme.,

løsningen af denne gentagelse er givet ved

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

Parallel multiwayay merge sortEdit

det forekommer vilkårligt at begrænse merge sorteringsalgoritmerne til en binær merge metode, da der normalt er p> 2 processorer tilgængelige. En bedre tilgang kan være at bruge en k-wayay-fusionsmetode, en generalisering af binær fusion, hvor k {\displaystyle k} sorterede sekvenser flettes sammen., Denne fusionsvariant er velegnet til at beskrive en sorteringsalgoritme på en barnevogn.

Basale IdeaEdit

parallel multiway mergesort proces på fire processorer t 0 {\displaystyle t_{0}} t 3 {\displaystyle t_{3}} .

Multise .uence selectionEdit

PseudocodeEdit

nedenfor gives den komplette pseudokode for den parallelle multiwayay-fusionssorteringsalgoritme., Vi antager, at der er en barriere-synkronisering før og efter multisequence udvælgelse sådan, at hver processor kan bestemme opdeling af elementer og den sekvens partition korrekt.

Analysedit

praktisk tilpasning og applikationedit

multiwayay merge sorteringsalgoritmen er meget skalerbar gennem sin høje paralleliseringsevne, som tillader brug af mange processorer. Dette gør algoritmen til en levedygtig kandidat til sortering af store mængder data, såsom dem, der behandles i computerklynger., Også, da der i sådanne systemer hukommelse er normalt ikke en begrænsende ressource, ulempen ved Plads kompleksitet Flet sort er ubetydelig. Andre faktorer bliver imidlertid vigtige i sådanne systemer, som ikke tages i betragtning ved modellering på en barnevogn. Her skal følgende aspekter overvejes: Hukommelseshierarki, når dataene ikke passer ind i processorens cache, eller kommunikationsomkostningerne ved udveksling af data mellem processorer, hvilket kan blive en flaskehals, når dataene ikke længere kan fås adgang til via den delte hukommelse.

Sanders et al., har præsenteret i deres papir-bulk-synkron parallel algoritme for flere multiway mergesort, der deler p {\displaystyle p} processorer til r {\displaystyle r} grupper af størrelsen p {\displaystyle p”} . Alle processorer sorterer lokalt først. I modsætning til enkelt niveau multiwayay mergesort, er disse sekvenser derefter opdelt i r {\displaystyle r} dele og tildelt de relevante processorgrupper. Disse trin gentages rekursivt i disse grupper. Dette reducerer kommunikationen og undgår især problemer med mange små meddelelser., Den hierarkiske struktur af det underliggende reelle netværk kan bruges til at definere processorgrupperne (f.eks…).

Yderligere VariantsEdit

Merge sort var en af de første sortering algoritmer, hvor optimal hastighed op var opnået, med Richard Cole ved hjælp af et smart subsampling algoritme til at sikre, O(1) flet. Andre sofistikerede parallelle sorteringsalgoritmer kan opnå de samme eller bedre tidsgrænser med en lavere konstant., For eksempel, i 1991 David Beføjelser, der er beskrevet en parallelized quicksort (og en tilhørende radix sort), der kan operere i O(log n) tid på en CRCW parallel random access machine (BARNEVOGN) med n processorer ved at udføre partitionering implicit. Beføjelser, der yderligere viser, at en pipeline version af Batcher er Bitonic Mergesort på O((log n)2) tid på en sommerfugl sortering netværk er i praksis faktisk hurtigere end O(log n) slags på en BARNEVOGN, og han giver detaljeret diskussion af de skjulte omkostninger i sammenligning, radix og parallelle sortering.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Videre til værktøjslinje