Professional Documents
Culture Documents
Sorting
One of the most common operations Definition:
Sorting Algorithms
Comparison based
compare-exchange O(n log n)
Noncomparison based
Uses known properties of the elements O(n) - bucket sort etc.
Comparisons
How compare elements on different nodes
Compare-Exchange
Compare-Split
Sorting Networks
Sorting Network
Merge Sort
Simplest parallel sorting algorithm? Steps
Distribute the elements Everybody sort their own sequence Merge the lists
Problem
How to merge the lists
Bitonic Sort
Key operation:
rearrange a bitonic sequence to ordered
Bitonic Sequence
sequence of elements <a0, a1, , an-1>
There exists i such that <a0, ,ai> is monotonically increasing and <ai+1, , an-1> is monotonically decreasing or There exists a cyclic shift of indicies such that the above is satisfied.
Bitonic Sequences
<1, 2, 4, 7, 6, 0>
First it increases then decreases i=3
<8, 9, 2, 1, 0, 4>
Consider a cyclic shift i will equal 3
Let s = <a0, a1, , an-1> an/2 is the beginning of the decreasing seq. Let s1= <min{a0, an/2}, min{a1, an/2 +1}min{an/2-1,an-1}> Let s2=<max{a0, an/2}, max{a1,an/2+1} max{an/2-1,an-1} > In sequence s1 there is an element bi = min{ai, an/2+i} all elements before bi are from increasing all elements after bi are from decreasing Sequence s2 has a similar point Sequences s1 and s2 are bitonic
To use the bitonic merge for n items, we must first have a bitonic sequence of n items. Two elements form a bitonic sequence Any unsorted sequence is a concatenation of bitonic sequences of size 2 Merge those into larger bitonic sequences until we end up with a bitonic sequence of size n
Bitonic Sort
Procedure BitonicSort for i = 0 to d -1 for j = i downto 0 if (i + 1)st bit of iproc <> jth bit of iproc comp_exchange_max(j, item) else comp_exchange_min(j, item) endif endfor endfor
comp_exchange_max and comp_exchange_min compare and exchange the item with the neighbor on the jth dimension
Assignment
Pick 16 random integers Draw the Bitonic Sort network Step through the Bitonic sort network to produce a sorted list of integers. Explain how the if statement in the Bitonic sort algorithm works.