0% found this document useful (0 votes)
535 views23 pages

Bitonic Sort

This document discusses sorting algorithms and parallel sorting. It defines sorting as arranging an unordered collection into order. Sorting algorithms are categorized as internal/external and comparison/non-comparison based. Parallel sorting issues include input/output storage location and number of elements per processor. Specific parallel sorting algorithms covered include compare-exchange, compare-split, merge sort, bitonic sort, and sorting networks. Bitonic sort works by recursively merging bitonic sequences until a fully sorted sequence is achieved.

Uploaded by

Ionutz Gabriel
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
535 views23 pages

Bitonic Sort

This document discusses sorting algorithms and parallel sorting. It defines sorting as arranging an unordered collection into order. Sorting algorithms are categorized as internal/external and comparison/non-comparison based. Parallel sorting issues include input/output storage location and number of elements per processor. Specific parallel sorting algorithms covered include compare-exchange, compare-split, merge sort, bitonic sort, and sorting networks. Bitonic sort works by recursively merging bitonic sequences until a fully sorted sequence is achieved.

Uploaded by

Ionutz Gabriel
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

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
compare-exchange O(n log n)

Noncomparison based
Uses known properties of the elements O(n) - bucket sort etc.

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

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

Parallel Sorting Algorithms


Merge Sort Quick Sort Bitonic Sort Others

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

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

Bitonic Merging Network

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


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 Network

Bitonic Merge on Hypercube

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

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.

You might also like