MergeSortAnimations
ComparatorNetworks
Sortingnetwork:afixednetworkthatsortsitinputsusingacomparator.
Apluscomparatorputsthesmallerinputonthetopoutput(min(x,y))
Aminuscomparatorputsthelargerinputonthetopoutput(max(x,y))
Acircuitwith3comparatorswillhaveadepthof3.
Question:Supposeyoureonlyallowedtouseplusorminuscomparators,isthereawaytosort
threeelementsusingfewercomparatorsorthathasashortercriticalpath?
Sort4Values
Question:Basedonthecircuitshown,eliminatethelasttwocomparators.Willthecircuitsort
anyorderofinputs?
BitonicSequences
Thefirststepinthesortingcircuitresultsinthefirsthalfincreasingandthesecondhalf
decreasing.ThisiscalledaBITONICSequence.
Doyouhaveabitonicsequence?
Asequenceisbitonicifitgoesup,thendown.
(a
,a
,,a
)isbitonicif.
0
1
n1
a
a
a
anda
0
1
i
i+1 a
n1
Thebitonicsequenceisinitiallynondecreasing,thennonincreasing.Thisconditionmayhold
fortheinitialsequenceorforacircularshiftofthesequence.
BitonicSplits
Onceasequenceisbitonicitiseasytosort.
Tosplit:
1. splitthesequenceintotwoparts,onethatincreasesandonethatdecreases.
2. pairtheelementsineachpart.Beginwith(a
,a
).
0
n/2
3. Nowtaketheminimumofeachpair.min(a
,a
),etc.
0
n/2
4. Theseminimumswillformanewbitonicsubsequence.
5. Nowlookatthemaximumsofeachpair.max(a
,a
),etc.
0
n/2
6. Themaximumswillalsoformabitonicsubsequence.
Thisisabitonicsplit.
Inabitonicsplitallelementsofthemaxsubsequencearegreaterthanallelementsofthemin
subsequence.
Thiswillleadtoadivideandconquerscheme.
Thesplitcanbedonewithoutextrastorage.
Sotheresultofabitonicsplitonabitonicsequenceistwobitonicsequences.
BitonicSplits:AParallelScheme
AbitonicsplitcanbeviewedasaDAGofindependentcomparators.
Thiswillleadtothefollowingparallelscheme:
Asubtlepoint:thefixedsizecircuithasaconstantdepthorspan.
BitonicMerge
Givenabitonicsequence,ifyouperformthemaximumnumberofbitonicsplitsonit,youwill
achieveabitonicmerge.meaningthebitonicsequenceisnowsortedinorder.
Thebitonicmergepseudocode:
BitonicMergeNetwork
Abitonicmergeisasequenceofsplits.Asequenceofsplitsisasetofmin/maxpairs.
Comparethecircuitwiththepseudocode.
GenerateaBitonicSequence
Tocreateamoregenericbitonicsequencenetwork:
1. Useplusandminuscomparators
2. Thefirstsetofcomparatorsiscreatingaseriesofupdownpairs.
3. Thiswillmakethefirstfourelementsofaneightitemsequencebitonic.
4. Itwillalsomakethesecondfourelementsbitonic.
5. Nowturnoneintoanincreasingsubsequenceandtheotherintoadecreasing
subsequence.
Insummarytocreateabitonicsequence:
1. startwithanarbitraryinput.
2. runplus/minusbitonicmergesofsize2.
3. runplus/minusbitonicmergesofsize4.
4. continueuntildone.
Conclusion:
Thebitonicmergehasafixedregularstructurethatlendsitselftoanaturalimplementationwith
aprogrammablegatearray,etc.
ItalsomeansitwillmapwelltofixeddataparallelhardwarelikeSIMD,etc.
Thedownsideis.itisNOTworkoptimal.Sotradeoffswillhavetobemade.