sorting algorithms · 2014. 12. 24. · sorting networks: bitonic sort how do we sort an unsorted...

50
Sorting Algorithms

Upload: others

Post on 12-Feb-2021

13 views

Category:

Documents


0 download

TRANSCRIPT

  • Sorting Algorithms

  • Topic Overview

    • Issues in Sorting on Parallel Computers

    • Sorting Networks

    • Bubble Sort and its Variants

    • Bucket and Sample Sort

    • Other Sorting Algorithms

    – Typeset by FoilTEX – 1

  • Sorting: Overview

    • One of the most commonly used and well-studied kernels.

    • The fundamental operation of comparison-based sorting iscompare-exchange.

    • The lower bound on any comparison-based sort of n numbersis Θ(n log n).

    • We focus here on comparison-based sorting algorithms.

    – Typeset by FoilTEX – 2

  • Sorting: Basics

    What is a parallel sorted sequence? Where are the input andoutput lists stored?

    • We assume that the input and output lists are distributed.

    • The sorted list is partitioned with the property that eachpartitioned list is sorted and each element in processor Pi’s listis less than that in Pj’s list if i < j.

    – Typeset by FoilTEX – 3

  • Sorting: Parallel Compare Exchange Operation

    Step 1 Step 2 Step 3

    PSfrag replacements

    ai aj

    Pi PiPi PjPj Pj

    max{ai, aj}min{ai, aj}aj, aiai, aj

    A parallel compare-exchange operation. Processes Pi and Pjsend their elements to each other. Process Pi keeps min{ai, aj},

    and Pj keeps max{ai, aj}.

    – Typeset by FoilTEX – 4

  • Sorting: Basics

    What is the parallel counterpart to a sequential comparator?

    • If each processor has one element, the compare exchangeoperation stores the smaller element at the processor with

    • If we have more than one element per processor, we call thisoperation a compare split. Assume each of two processorshave n/p elements.

    • After the compare-split operation, the smaller n/p elements areat processor Pi and the larger n/p elements at Pj, where i < j.

    – Typeset by FoilTEX – 5

    smaller id.

  • Sorting: Parallel Compare Split Operation

    861 11 13

    1 2 6 7 82 6 9 12 13

    1311

    1 6 9 12 137 8 1110 10

    11861 13 2 97 1210

    87

    1 86

    211 1

    2 97 12

    2 97 12

    10

    10

    Step 2

    9 12 131110

    Step 4Step 3

    Step 1

    PSfrag replacements

    Pi

    Pi Pi

    PiPj

    Pj Pj

    Pj

    A compare-split operation. Each process sends its block of sizen/p to the other process. Each process merges the received

    block with its own block and retains only the appropriate half ofthe merged block. In this example, process Pi retains the smaller

    elements and process Pj retains the larger elements.

    – Typeset by FoilTEX – 6

  • Sorting Networks

    • Networks of comparators designed specifically for sorting.

    • A comparator is a device with two inputs x and y and twooutputs x′ and y′. For an increasing comparator , x′ = min{x, y}and y′ = max{x, y}; and vice-versa.

    • We denote an increasing comparator by ⊕ and a decreasingcomparator by .

    • The speed of the network is proportional to its depth.

    – Typeset by FoilTEX – 7

  • Sorting Networks: Comparators

    (a)

    (b)

    PSfrag replacements

    x

    x

    x

    x

    y

    y

    y

    y

    x′ = min{x, y}

    y′ = max{x, y}

    x′ = max{x, y}

    y′ = min{x, y}

    x′ = min{x, y}

    y′ = max{x, y}

    x′ = max{x, y}

    y′ = min{x, y}

    A schematic representation of comparators: (a) an increasingcomparator, and (b) a decreasing comparator.

    – Typeset by FoilTEX – 8

  • Sorting NetworksColumns of comparators

    Inpu

    t wir

    es

    Out

    put w

    ires

    Inte

    rcon

    nect

    ion

    netw

    ork

    A typical sorting network. Every sorting network is made up of aseries of columns, and each column contains a number of

    comparators connected in parallel.

    – Typeset by FoilTEX – 9

  • Sorting Networks: Bitonic Sort

    • A bitonic sorting network sorts n elements in Θ(log2 n) time.

    • A bitonic sequence has two tones – increasing anddecreasing, or vice versa. Any cyclic rotation of such networksis also considered bitonic.

    • 〈1, 2, 4, 7, 6, 0〉 is a bitonic sequence, because it first increasesand then decreases. 〈8, 9, 2, 1, 0, 4〉 is another bitonic sequence,because it is a cyclic shift of 〈0, 4, 8, 9, 2, 1〉.

    • The kernel of the network is the rearrangement of a bitonicsequence into a sorted sequence.

    – Typeset by FoilTEX – 10

  • Sorting Networks: Bitonic Sort

    • Let s = 〈a0, a1, . . . , an−1〉 be a bitonic sequence such that a0 ≤a1 ≤ . . . ≤ an/2−1 and an/2 ≥ an/2+1 ≥ . . . ≥ an−1.

    • Consider the following subsequences of s:

    s1 = 〈min{a0, an/2}, min{a1, an/2+1}, . . . , min{an/2−1, an−1}〉s2 = 〈max{a0, an/2}, max{a1, an/2+1}, . . . , max{an/2−1, an−1}〉

    (1)

    • Note that s1 and s2 are both bitonic and each element of s1 isless that every element in s2.

    • We can apply the procedure recursively on s1 and s2 to get thesorted sequence.

    – Typeset by FoilTEX – 11

  • Sorting Networks: Bitonic SortOriginalsequence 3 5 8 9 10 12 14 20 95 90 60 40 35 23 18 01st Split 3 5 8 9 10 12 14 0 95 90 60 40 35 23 18 202nd Split 3 5 8 0 10 12 14 9 35 23 18 20 95 90 60 403rd Split 3 0 8 5 10 9 14 12 18 20 35 23 60 40 95 904th Split 0 3 5 8 9 10 12 14 18 20 23 35 40 60 90 95

    Merging a 16-element bitonic sequence through a series of log 16bitonic splits.

    – Typeset by FoilTEX – 12

  • Sorting Networks: Bitonic Sort

    • We can easily build a sorting network to implement this bitonicmerge algorithm.

    • Such a network is called a bitonic merging network .

    • The network contains log n columns. Each column contains n/2comparators and performs one step of the bitonic merge.

    • We denote a bitonic merging network with n inputs by ⊕BM[n].

    • Replacing the ⊕ comparators by comparators results in adecreasing output sequence; such a network is denoted byBM[n].

    – Typeset by FoilTEX – 13

  • Sorting Networks: Bitonic Sort

    18

    23

    35

    40

    60

    90

    95

    20

    14

    12

    10

    9

    8

    5

    3

    95

    90

    60

    40

    35

    23

    20

    18

    14

    12

    10

    9

    8

    5

    3

    0

    90

    95

    40

    60

    23

    35

    20

    18

    12

    14

    9

    10

    5

    8

    0

    3

    40

    90

    60

    95

    20

    18

    23

    35

    9

    0

    12

    10

    0

    5

    8

    33

    5

    10

    14

    8

    9

    12

    14

    0

    95

    90

    40

    35

    23

    20

    18

    60

    0011

    1100

    1110

    1101

    1011

    1010

    1001

    1000

    0111

    0110

    0101

    0100

    0010

    0001

    0000

    Wires

    1111

    A bitonic merging network for n = 16. The input wires arenumbered 0, 1 . . . , n − 1, and the binary representation of these

    numbers is shown. Each column of comparators is drawnseparately; the entire figure represents a ⊕BM[16] bitonic

    merging network. The network takes a bitonic sequence andoutputs it in sorted order.

    – Typeset by FoilTEX – 14

  • Sorting Networks: Bitonic Sort

    How do we sort an unsorted sequence using a bitonic merge?

    • We must first build a single bitonic sequence from the givensequence.

    • A sequence of length 2 is a bitonic sequence.

    • A bitonic sequence of length 4 can be built by sorting the firsttwo elements using ⊕BM[2] and next two, using BM[2].

    • This process can be repeated to generate larger bitonicsequences.

    – Typeset by FoilTEX – 15

  • Sorting Networks: Bitonic Sort

    BM[2]

    BM[2]

    BM[2]

    BM[2]

    BM[2]

    BM[2]

    BM[2]

    BM[2]

    BM[16]

    BM[4]

    BM[4]

    BM[4]

    BM[4]

    BM[8]

    BM[8]

    0001

    0100

    0101

    0000

    0010

    0011

    0110

    0111

    1000

    1001

    10101011

    1100

    1101

    1110

    1111

    Wires

    A schematic representation of a network that converts an inputsequence into a bitonic sequence. In this example, ⊕BM[k] andBM[k] denote bitonic merging networks of input size k that use⊕ and comparators, respectively. The last merging network

    (⊕BM[16]) sorts the input. In this example, n = 16.

    – Typeset by FoilTEX – 16

  • Sorting Networks: Bitonic Sort

    23

    90

    60

    40

    0

    3

    8

    12

    14

    20

    10

    9

    5

    0

    18

    23

    35

    40

    60

    90

    95

    20

    14

    12

    10

    9

    8

    18

    95

    5

    3

    18

    95

    35

    23

    40

    60

    90

    0

    12

    14

    8

    3

    5

    9

    20

    10

    18

    95

    35

    23

    40

    60

    0

    90

    14

    12

    8

    3

    9

    5

    20

    10

    35

    1000

    1111

    1110

    1101

    1100

    1011

    1010

    1001

    0111

    0110

    0101

    0100

    0011

    0010

    0001

    0000

    Wires

    The comparator network that transforms an input sequence of16 unordered numbers into a bitonic sequence.

    – Typeset by FoilTEX – 17

  • Sorting Networks: Bitonic Sort

    • The depth of the network is Θ(log2 n).

    • Each stage of the network contains n/2 comparators. Aserial implementation of the network would have complexityΘ(n log2 n).

    – Typeset by FoilTEX – 18

  • Mapping Bitonic Sort to Hypercubes

    • Consider the case of one item per processor. The questionbecomes one of how the wires in the bitonic network shouldbe mapped to the hypercube interconnect.

    • Note from our earlier examples that the compare-exchangeoperation is performed between two wires only if their labelsdiffer in exactly one bit!

    • This implies a direct mapping of wires to processors. Allcommunication is nearest neighbor!

    – Typeset by FoilTEX – 19

  • Mapping Bitonic Sort to Hypercubes

    Step 2

    Step 4Step 3

    Step 1

    1101

    1100

    1010

    1110

    1111

    1011

    0000

    0001

    0101

    0100 0110

    0011

    0111

    1000

    1001

    0010

    0100 1100

    1101

    1110

    0000

    0001

    0101

    0010

    0110

    0111

    0011

    1001

    1000

    1010

    1011

    1111

    1100

    1101

    1010

    0100

    0000

    0001

    0101

    0010

    0110

    0111

    0011

    1000

    1001 1011

    1111

    1110

    1100

    1101

    0100

    0000

    0001

    0101

    0010

    0110

    0111

    1000

    1001 1011

    1111

    1110

    0011

    1010

    Communication during the last stage of bitonic sort. Each wire ismapped to a hypercube process; each connection represents a

    compare-exchange between processes.

    – Typeset by FoilTEX – 20

  • Mapping Bitonic Sort to Hypercubes

    1110

    11001101

    1011

    10011000

    1010

    01100101

    0111

    0100001100100001

    1111

    0000

    Stage 3

    1

    1

    1

    1

    1

    1

    1

    1

    2,1

    2,1

    2,1

    2,1

    3,2,1

    3,2,1

    4,3,2,1

    Processors

    Stage 4Stage 2Stage 1

    Communication characteristics of bitonic sort on a hypercube.During each stage of the algorithm, processes communicate

    along the dimensions shown.

    – Typeset by FoilTEX – 21

  • Mapping Bitonic Sort to Hypercubes

    • During each step of the algorithm, every process performsa compare-exchange operation (single nearest neighborcommunication of one word).

    • Since each step takes Theta(1) time, the parallel time is

    TP = Θ(log2 n) (2)

    • This algorithm is cost optimal w.r.t. its serial counterpart, but notw.r.t. the best sorting algorithm.

    – Typeset by FoilTEX – 23

  • Mapping Bitonic Sort to Meshes

    • The connectivity of a mesh is lower than that of a hypercube,so we must expect some overhead in this mapping.

    • Consider the row-major shuffled mapping of wires toprocessors.

    – Typeset by FoilTEX – 24

  • Mapping Bitonic Sort to Meshes

    1101

    1001 1010

    0100

    1000 1011

    1100 1110 1111

    0101 0110 0111

    0000 0001 0010 0011

    1110

    1001

    0010

    1010

    1101 1100

    0000 0001 0011

    0111 0110 0101 0100

    1000 1011

    1111

    1000

    1110

    1100

    1111

    0000 0001 0100 0101

    0010 0011 0110 0111

    1001 1101

    1010 1011

    (a) (b) (c)

    Different ways of mapping the input wires of the bitonic sortingnetwork to a mesh of processes: (a) row-major mapping, (b)

    row-major snakelike mapping, and (c) row-major shuffledmapping.

    – Typeset by FoilTEX – 25

  • Mapping Bitonic Sort to Meshes

    Step 1 Step 2 Step 3 Step 4

    Stage 4

    The last stage of the bitonic sort algorithm for n = 16 on a mesh,using the row-major shuffled mapping. During each step, process

    pairs compare-exchange their elements. Arrows indicate thepairs of processes that perform compare-exchange operations.

    – Typeset by FoilTEX – 26

  • Block of Elements Per Processor

    • Each process is assigned a block of n/p elements.

    • The first step is a local sort of the local block.

    • Each subsequent compare-exchange operation is replacedby a compare-split operation.

    • We can effectively view the bitonic network as having (1 +log p)(log p)/2 steps.

    – Typeset by FoilTEX – 28

  • Block of Elements Per Processor: Hypercube

    • Initially the processes sort their n/p elements (using merge sort)in time Θ((n/p) log(n/p)) and then perform Θ(log2 p) compare-split steps.

    • The parallel run time of this formulation is

    TP =

    local sort︷ ︸︸ ︷

    Θ

    (n

    plog

    n

    p

    )

    +

    comparisons︷ ︸︸ ︷

    Θ

    (n

    plog2 p

    )

    +

    communication︷ ︸︸ ︷

    Θ

    (n

    plog2 p

    )

    .

    • Comparing to an optimal sort, the algorithm can efficiently useup to p = Θ(2

    √log n) processes.

    • The isoefficiency function due to both communication andextra work is Θ(plog p log2 p).

    – Typeset by FoilTEX – 29

  • Block of Elements Per Processor: Mesh

    • The parallel runtime in this case is given by:

    TP =

    local sort︷ ︸︸ ︷

    Θ

    (n

    plog

    n

    p

    )

    +

    comparisons︷ ︸︸ ︷

    Θ

    (n

    plog2 p

    )

    +

    communication︷ ︸︸ ︷

    Θ

    (n√p

    )

    • This formulation can efficiently use up to p = Θ(log2 n) processes.

    • The isoefficiency function is Θ(2√

    p√p).

    – Typeset by FoilTEX – 30

  • Performance of Parallel Bitonic Sort

    The performance of parallel formulations of bitonic sort for nelements on p processes.

    Maximum Number of Corresponding IsoefficiencyArchitecture Processes for E = Θ(1) Parallel Run Time Function

    Hypercube Θ(2√

    log n) Θ(n/(2√

    log n) log n) Θ(plog p log2 p)

    Mesh Θ(log2 n) Θ(n/ log n) Θ(2√

    p√p)Ring Θ(log n) Θ(n) Θ(2pp)

    – Typeset by FoilTEX – 31

  • Bubble Sort and its Variants

    The sequential bubble sort algorithm compares and exchangesadjacent elements in the sequence to be sorted:

    1. procedure BUBBLE SORT(n)2. begin3. for i := n − 1 downto 1 do4. for j := 1 to i do5. compare-exchange(aj, aj+1);6. end BUBBLE SORT

    Sequential bubble sort algorithm.

    – Typeset by FoilTEX – 32

  • Bubble Sort and its Variants

    • The complexity of bubble sort is Θ(n2).

    • Bubble sort is difficult to parallelize since the algorithm has noconcurrency.

    • A simple variant, though, uncovers the concurrency.

    – Typeset by FoilTEX – 33

  • Odd-Even Transposition

    1. procedure ODD-EVEN(n)2. begin3. for i := 1 to n do4. begin5. if i is odd then6. for j := 0 to n/2 − 1 do7. compare-exchange(a2j+1, a2j+2);8. if i is even then9. for j := 1 to n/2 − 1 do10. compare-exchange(a2j, a2j+1);11. end for12. end ODD-EVEN

    Sequential odd-even transposition sort algorithm.

    – Typeset by FoilTEX – 34

  • Odd-Even Transposition

    3 3 4 5 6 8

    Phase 6 (even)

    2 1

    53 2 8 6 4

    2 3 8 5 6 4

    5 48 62 3

    3 5 8 4 6

    3 5 4 8 6

    3 4 5 6 8

    Phase 1 (odd)

    Unsorted

    Phase 2 (even)

    Phase 3 (odd)

    Phase 4 (even)

    Phase 5 (odd)

    3 1

    13

    3 1

    12

    2

    2

    3

    3

    3

    1

    1

    Sorted

    3 3 4 5 6 8

    3 3 4 5 6 8

    1 2

    1 2

    Phase 8 (even)

    Phase 7 (odd)

    Sorting n = 8 elements, using the odd-even transposition sortalgorithm. During each phase, n = 8 elements are compared.

    – Typeset by FoilTEX – 35

  • Odd-Even Transposition

    • After n phases of odd-even exchanges, the sequence is sorted.

    • Each phase of the algorithm (either odd or even) requires Θ(n)comparisons.

    • Serial complexity is Θ(n2).

    – Typeset by FoilTEX – 36

  • Parallel Odd-Even Transposition

    • Consider the one item per processor case.

    • There are n iterations, in each iteration, each processor doesone compare-exchange.

    • The parallel run time of this formulation is Θ(n).

    • This is cost optimal with respect to the base serial algorithm butnot the optimal one.

    – Typeset by FoilTEX – 37

  • Parallel Odd-Even Transposition

    1. procedure ODD-EVEN PAR(n)2. begin3. id := process’s label4. for i := 1 to n do5. begin6. if i is odd then7. if id is odd then8. compare-exchange min(id + 1);9. else10. compare-exchange max(id − 1);11. if i is even then12. if id is even then13. compare-exchange min(id + 1);14. else15. compare-exchange max(id − 1);16. end for17. end ODD-EVEN PAR

    Parallel formulation of odd-even transposition.

    – Typeset by FoilTEX – 38

  • Parallel Odd-Even Transposition

    • Consider a block of n/p elements per processor.

    • The first step is a local sort.

    • In each subsequent step, the compare exchange operation isreplaced by the compare split operation.

    • The parallel run time of the formulation is

    TP =

    local sort︷ ︸︸ ︷

    Θ

    (n

    plog

    n

    p

    )

    +

    comparisons︷ ︸︸ ︷

    Θ(n) +

    communication︷ ︸︸ ︷

    Θ(n).

    – Typeset by FoilTEX – 39

  • Parallel Odd-Even Transposition

    • The parallel formulation is cost-optimal for p = O(log n).

    • The isoefficiency function of this parallel formulation is Θ(p 2p).

    – Typeset by FoilTEX – 40

  • Shellsort

    • Let n be the number of elements to be sorted and p be thenumber of processes.

    • During the first phase, processes that are far away from eachother in the array compare-split their elements.

    • During the second phase, the algorithm switches to an odd-even transposition sort.

    – Typeset by FoilTEX – 41

  • Parallel Shellsort

    • Initially, each process sorts its block of n/p elements internally.

    • Each process is now paired with its corresponding process inthe reverse order of the array. That is, process Pi, where i < p/2,is paired with process Pp−i−1.

    • A compare-split operation is performed.

    • The processes are split into two groups of size p/2 each and theprocess repeated in each group.

    – Typeset by FoilTEX – 42

  • Parallel Shellsort

    0 123 4 5 6 7

    0 123 4 5 6 7

    0 123 4 5 6 7

    An example of the first phase of parallel shellsort on aneight-process array.

    – Typeset by FoilTEX – 43

  • Parallel Shellsort

    • Each process performs d = log p compare-split operations.

    • With O(p) bisection width, the each communication can beperformed in time Θ(n/p) for a total time of Θ((n log p)/p).

    • In the second phase, l odd and even phases are performed,each requiring time Θ(n/p).

    • The parallel run time of the algorithm is:

    TP =

    local sort︷ ︸︸ ︷

    Θ

    (n

    plog

    n

    p

    )

    +

    first phase︷ ︸︸ ︷

    Θ

    (n

    plog p

    )

    +

    second phase︷ ︸︸ ︷

    Θ

    (

    ln

    p

    )

    . (3)

    – Typeset by FoilTEX – 44

  • Bucket and Sample Sort

    • In Bucket sort, the range [a, b] of input numbers is divided into mequal sized intervals, called buckets.

    • Each element is placed in its appropriate bucket.

    • If the numbers are uniformly divided in the range, the bucketscan be expected to have roughly identical number ofelements.

    • Elements in the buckets are locally sorted.

    • The run time of this algorithm is Θ(n log(n/m)).

    – Typeset by FoilTEX – 61

  • Parallel Bucket Sort

    • Parallelizing bucket sort is relatively simple. We can select m =p.

    • In this case, each processor has a range of values it isresponsible for.

    • Each processor runs through its local list and assigns each of itselements to the appropriate processor.

    • The elements are sent to the destination processors using asingle all-to-all personalized communication.

    • Each processor sorts all the elements it receives.

    – Typeset by FoilTEX – 62

  • Parallel Bucket and Sample Sort

    • The critical aspect of the above algorithm is one of assigningranges to processors. This is done by suitable splitter selection.

    • The splitter selection method divides the n elements into mblocks of size n/m each, and sorts each block by usingquicksort.

    • From each sorted block it chooses m − 1 evenly spacedelements.

    • The m(m − 1) elements selected from all the blocks representthe sample used to determine the buckets.

    • This scheme guarantees that the number of elements endingup in each bucket is less than 2n/m.

    – Typeset by FoilTEX – 63

  • Parallel Bucket and Sample SortInitial element distribution

    Local sort &sample selection

    Global splitter selection

    Final elementassignment

    Sample combining

    113 1014 201718 2 6722 24 3 191615 23 4 11 12 5 8219

    1 2 13 181714 22 3 6 9 2410 15 20 21 4 5 8 11 12 16 23197

    7 17 9 20 8 16

    7 8 9 16 17 20

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 2419

    PSfrag replacements

    P0

    P0

    P0

    P1

    P1

    P1

    P2

    P2

    P2

    An example of the execution of sample sort on an array with 24elements on three processes.

    – Typeset by FoilTEX – 64

  • Parallel Bucket and Sample Sort

    • The splitter selection scheme can itself be parallelized.

    • Each processor generates the p − 1 local splitters in parallel.

    • All processors share their splitters using a single all-to-allbroadcast operation.

    • Each processor sorts the p(p−1) elements it receives and selectsp − 1 uniformly spaces splitters from them.

    – Typeset by FoilTEX – 65

  • Parallel Bucket and Sample Sort: Analysis

    • The internal sort of n/p elements requires time Θ((n/p) log(n/p)),and the selection of p − 1 sample elements requires time Θ(p).

    • The time for an all-to-all broadcast is Θ(p2), the time to internallysort the p(p−1) sample elements is Θ(p2 log p), and selecting p−1evenly spaced splitters takes time Θ(p).

    • Each process can insert these p − 1 splitters in its local sortedblock of size n/p by performing p − 1 binary searches in timeΘ(p log(n/p)).

    • The time for reorganization of the elements is O(n/p).

    – Typeset by FoilTEX – 66

  • Parallel Bucket and Sample Sort: Analysis

    • The total time is given by:

    TP =

    local sort︷ ︸︸ ︷

    Θ

    (n

    plog

    n

    p

    )

    +

    sort sample︷ ︸︸ ︷

    Θ(p2 log p

    )+

    block partition︷ ︸︸ ︷

    Θ

    (

    p logn

    p

    )

    +

    communication︷ ︸︸ ︷

    Θ(n/p). (5)

    • The isoefficiency of the formulation is Θ(p3 log p).

    – Typeset by FoilTEX – 67