Cs 584
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

CS 584 PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

CS 584

An Image/Link below is provided (as is) to download presentation

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


Cs 584

CS 584


Sorting

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

Sorting Algorithms

  • Comparison based

    • compare-exchange

    • O(n log n)

  • Noncomparison based

    • Uses known properties of the elements

    • O(n) - bucket sort etc.


Parallel sorting issues

Parallel Sorting Issues

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


Compare exchange

Compare-Exchange


Compare split

Compare-Split


Sorting networks

Sorting Networks

  • Specialized hardware for sorting

    • based on comparator

x

y

x

y

max{x,y}

min{x,y}

min{x,y}

max{x,y}


Sorting network

Sorting Network


Parallel sorting algorithms

Parallel Sorting Algorithms

  • Merge Sort

  • Quick Sort

  • Bitonic Sort

  • Others …


Merge sort

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

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

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


Rearranging a bitonic sequence

Rearranging a Bitonic Sequence

  • 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


Rearranging a bitonic sequence1

Rearranging a Bitonic Sequence

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


Rearranging a bitonic sequence2

Rearranging a Bitonic Sequence


Bitonic merging network

Bitonic Merging Network


What about unordered lists

What about unordered lists?

  • 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


Mapping onto a hypercube

Mapping onto a hypercube

  • One element per processor

  • Start with the sorting network maps

  • Each wire represents a processor

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


Bitonic merging network1

Bitonic Merging Network


Bitonic merge on hypercube

Bitonic Merge on Hypercube


Bitonic sort1

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


Bitonic sort stages

Bitonic Sort Stages


Assignment

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.


  • Login