Development of parallel sorting algorithms for GPU
Vývoj paralelních řadících algoritmů na GPU
Authors
Supervisors
Reviewers
Editors
Other contributors
Journal Title
Journal ISSN
Volume Title
Publisher
České vysoké učení technické v Praze
Czech Technical University in Prague
Czech Technical University in Prague
Date
Abstract
Tato práce se zabývá vybranými paralelními řadícími algoritmy vhodnými pro implementaci na GPU. Jedná se konkrétně o Bitonic sort a Quicksort. Bitonic sort, i když má vyšší časovou složitost, je vhodným kandidátem na řazení malých posloupností. Paralelní Quicksort je rychlejší pro větší vstupy, ale potřebuje $\Theta(n)$ paměťi na pomocné pole pro přeskládání. Oba algoritmy jsou popsány a implementovány pro GPU od NVIDIA s pomocí CUDA API a TNL knihovny. Jako jazyk byl zvolen C++. U Bitonic sortu je navíc představena varianta, která využívá jen lambda funkce a odprošťuje se tak od kontejneru dat. Všechny implementace jsou řádně otestovány, změřeny a porovnány s~jinými implementacemi, které jsou dostupné pro CPU a GPU.
This thesis is about selected sorting algorithms suitable for GPU implementation. The chosen algorithms are Bitonic sort and Quicksort. Although Bitonic sort has a worse theoretical time complexity, it is a suitable candidate for sorting smaller inputs. Quicksort is faster for bigger inputs, but for parallel implementation, $\Theta(n)$ auxiliary memory is needed because it is an out-of-place algorithm. Both algorithms were studied and then implemented in C++ extended with CUDA API with the help of TNL library. For Bitonic sort, a version that only uses lambda functions is introduced. The resulting work was then tested, measured, and compared with other CPU and GPU implementations.
This thesis is about selected sorting algorithms suitable for GPU implementation. The chosen algorithms are Bitonic sort and Quicksort. Although Bitonic sort has a worse theoretical time complexity, it is a suitable candidate for sorting smaller inputs. Quicksort is faster for bigger inputs, but for parallel implementation, $\Theta(n)$ auxiliary memory is needed because it is an out-of-place algorithm. Both algorithms were studied and then implemented in C++ extended with CUDA API with the help of TNL library. For Bitonic sort, a version that only uses lambda functions is introduced. The resulting work was then tested, measured, and compared with other CPU and GPU implementations.
Description
Keywords
paralelní řazení, GPU, CUDA, C++, TNL, Bitonic sort, Quicksort, parallel sort, GPU, CUDA, C++, TNL, Bitonic sort, Quicksort