20
Sorting One of the most common operations One of the most common operations Definition: Definition: Arrange an unordered collection of Arrange an unordered collection of elements into a increasing or elements into a increasing or decreasing order. decreasing order. Two categories of sorting Two categories of sorting internal internal external external

Bi Tonic Sort

Embed Size (px)

DESCRIPTION

sorting in parallel systems

Citation preview

  • SortingOne of the most common operationsDefinition:

    Arrange an unordered collection of elements into a increasing or decreasing order.Two categories of sorting

    internalexternal

  • Sorting AlgorithmsComparison based

    compare-exchangeO(n log n)Noncomparison based

    Uses known properties of the elementsO(n) - bucket sort etc.

  • Parallel Sorting IssuesInput and Output sequence storage

    Where?Local to one processor or distributedComparisons

    How compare elements on different nodes elements per processor

    One (compare-exchange --> comm.)Multiple (compare-split --> comm.)

  • Compare-Exchange

    1.ps

  • Compare-Split

    2.ps

  • Sorting NetworksSpecialized hardware for sorting

    based on comparator

    xy

    xymax{x,y}min{x,y}

    min{x,y}max{x,y}

  • Sorting Network

    3.ps

  • Parallel Sorting AlgorithmsMerge SortQuick SortBitonic Sort

  • Merge SortSimplest parallel sorting algorithm?Steps

    Distribute the elementsEverybody sort their own sequenceMerge the listsProblem

    How to merge the lists

  • Bitonic SortKey operation:

    rearrange a bitonic sequence to orderedBitonic Sequence

    sequence of elements There exists i such that is monotonically increasing and is monotonically decreasing orThere exists a cyclic shift of indicies such that the above is satisfied.

  • Bitonic Sequences

    First it increases then decreases i = 3

    Consider a cyclic shifti will equal 3

  • Rearranging a Bitonic SequenceLet s =

    an/2 is the beginning of the decreasing seq.Let s1= Let s2=In sequence s1 there is an element bi = min{ai, an/2+i}

    all elements before bi are from increasingall elements after bi are from decreasingSequence s2 has a similar pointSequences s1 and s2 are bitonic

  • Rearranging a Bitonic SequenceEvery element of s1 is smaller than every element of s2Thus, 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 Sequence

    4.ps

  • Bitonic Merging Network

    5.ps

  • 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 sequenceAny unsorted sequence is a concatenation of bitonic sequences of size 2Merge those into larger bitonic sequences until we end up with a bitonic sequence of size n

  • Mapping onto a hypercubeOne element per processorStart with the sorting network mapsEach wire represents a processorMap processors to wires to minimize the distance traveled during exchange

  • Bitonic Merging Network

    6.ps

  • Bitonic SortProcedure BitonicSortfor 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 endforendfor

    comp_exchange_max and comp_exchange_min compare and exchange the item with the neighbor on the jth dimension

  • Bitonic Sort Stages

    7.ps