Repository of sorting algorithms in C and CUDA.
Our program generates and fills arrays in four different ways:
- arrays with totally random elements
- arrays already ordered
- arrays ordered in descending order
- arrays 90% ordered.
Sorting methods implemented
- Selection sort
- Insertion sort
- Shell sort
- Quick sort
- Heap sort
- Merge sort
- CUDA Quick sort
- CUDA Merge sort
NVIDIA CUDA Toolkit 6.0, NVCC v6.0.1, GCC and G++
Follow these instructions to set up your environment: prosciens’s tutorial to set up CUDA 6 compiler environment on Debian testing/sid
Our CUDA sorting code requires devices with CUDA compute capability 3.5 or higher, in order to use the Dinamic Parallelism technology, read more about it here:
NVIDIA blog describing Dinamic Parallelism in Kepler GPUs
Run the MAKEFILE
To run the program, type:
./a.out -a $algorithm -n $number_of_elements -s $state [-P]
- -a sorting algorithm
- -n number of elements
- -s array state
- -P print results
| Param | Value |
|---|---|
| -a | selection |
| insertion | |
| shell | |
| quick | |
| heap | |
| merge | |
| gpuquick | |
| gpumerge | |
| -n | int > 0 |
| -s | random |
| ascending | |
| descending | |
| almost | |
| -P |
CUDA code tested on a GeForce GT 740M
| GeForce GT 740M | Features |
|---|---|
| CUDA Driver Version / Runtime Version | 6.5 / 6.0 |
| CUDA Capability Major/Minor version number: | 3.5 |
| Total amount of global memory: | 2048 MBytes (2147352576 bytes) |
| ( 2) Multiprocessors, (192) CUDA Cores/MP: | 384 CUDA Cores |