On Sorting and Load-Balancing on GPUs
Journal article, 2008
In this paper we present GPU-Quicksort, an efficient
Quicksort algorithm suitable for highly parallel multi-core
graphics processors. Quicksort has previously been considered
as an inefficient sorting solution for graphics processors,
but we show that GPU-Quicksort often performs better
than the fastest known sorting implementations for graphics
processors, such as radix and bitonic sort. Quicksort
can thus be seen as a viable alternative for sorting large
quantities of data on graphics processors.
We also present a comparison of different load balancing
schemes. To get maximum performance on the manycore
graphics processors it is important to have an even
balance of the workload so that all processing units contribute
equally to the task at hand. This can be hard to
achieve when the cost of a task is not known beforehand
and when new sub-tasks are created dynamically during execution.
With the recent advent of scatter operations and
atomic hardware primitives it is now possible to bring some
of the more elaborate dynamic load balancing schemes from
the conventional SMP systems domain to the graphics processor
domain.