Counting and Occurrence Sort for GPUs using an Embedded Language
Paper in proceedings, 2013
This paper investigates two sorting algorithms: counting sort and a
variation, occurrence sort, which also removes duplicate elements,
and examines their suitability for running on the GPU. The dupli-
cate removing variation turns out to have a natural functional, data-
parallel implementation which makes it particularly interesting for
The algorithms are implemented in Obsidian, a high-level do-
main specific language for GPU programming.
Measurements show that our implementations in many cases
outperform the sorting algorithm provided by the library Thrust.
Furthermore, occurrence sort is another factor of two faster than
ordinary counting sort. We conclude that counting sort is an impor-
tant contender when considering sorting algorithms for the GPU,
and that occurrence sort is highly preferable when applicable. We
also show that Obsidian can produce very competitive code.