1 / 23

# CS 584 - PowerPoint PPT Presentation

CS 584. Sorting. One of the most common operations Definition: Arrange an unordered collection of elements into a monotonically increasing or decreasing order. Two categories of sorting internal (fits in memory) external (uses auxiliary storage). Sorting Algorithms. Comparison based

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'CS 584' - megan

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

• One of the most common operations

• Definition:

• Arrange an unordered collection of elements into a monotonically increasing or decreasing order.

• Two categories of sorting

• internal (fits in memory)

• external (uses auxiliary storage)

• Comparison based

• compare-exchange

• O(n log n)

• Noncomparison based

• Uses known properties of the elements

• O(n) - bucket sort etc.

• Input and Output sequence storage

• Where?

• Local to one processor or distributed

• Comparisons

• How compare elements on different nodes

• # of elements per processor

• One (compare-exchange --> comm.)

• Multiple (compare-split --> comm.)

• Specialized hardware for sorting

• based on comparator

x

y

x

y

max{x,y}

min{x,y}

min{x,y}

max{x,y}

• Merge Sort

• Quick Sort

• Bitonic Sort

• Others …

• Simplest parallel sorting algorithm?

• Steps

• Distribute the elements

• Everybody sort their own sequence

• Merge the lists

• Problem

• How to merge the lists

• 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.

• <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

• Every element of s1 is smaller than every element of s2

• Thus, we have reduced the problem of rearranging a bitonic sequence of size n to rearranging two bitonic sequences of size n/2 then concatenating the sequences.

• 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

• One element per processor

• Each wire represents a processor

• Map processors to wires to minimize the distance traveled during exchange

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

• 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.