All Projects → Gram21 → Gpusorting

Gram21 / Gpusorting

Implementation of a few sorting algorithms in OpenCL

Projects that are alternatives of or similar to Gpusorting

Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+8677.78%)
Mutual labels:  gpu, opencl
Hipsycl
Implementation of SYCL for CPUs, AMD GPUs, NVIDIA GPUs
Stars: ✭ 377 (+4088.89%)
Mutual labels:  gpu, opencl
Aparapi
The New Official Aparapi: a framework for executing native Java and Scala code on the GPU.
Stars: ✭ 352 (+3811.11%)
Mutual labels:  gpu, opencl
Arrayfire
ArrayFire: a general purpose GPU library.
Stars: ✭ 3,693 (+40933.33%)
Mutual labels:  gpu, opencl
Clblast
Tuned OpenCL BLAS
Stars: ✭ 559 (+6111.11%)
Mutual labels:  gpu, opencl
Bayadera
High-performance Bayesian Data Analysis on the GPU in Clojure
Stars: ✭ 342 (+3700%)
Mutual labels:  gpu, opencl
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (+4055.56%)
Mutual labels:  gpu, opencl
Benchmarks
Comparison tools
Stars: ✭ 139 (+1444.44%)
Mutual labels:  comparison, gpu
Arrayfire Rust
Rust wrapper for ArrayFire
Stars: ✭ 525 (+5733.33%)
Mutual labels:  gpu, opencl
John
John the Ripper jumbo - advanced offline password cracker, which supports hundreds of hash and cipher types, and runs on many operating systems, CPUs, GPUs, and even some FPGAs
Stars: ✭ 5,656 (+62744.44%)
Mutual labels:  gpu, opencl
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+83166.67%)
Mutual labels:  gpu, opencl
Coriander
Build NVIDIA® CUDA™ code for OpenCL™ 1.2 devices
Stars: ✭ 665 (+7288.89%)
Mutual labels:  gpu, opencl
hipacc
A domain-specific language and compiler for image processing
Stars: ✭ 72 (+700%)
Mutual labels:  gpu, opencl
Neanderthal
Fast Clojure Matrix Library
Stars: ✭ 927 (+10200%)
Mutual labels:  gpu, opencl
rindow-neuralnetworks
Neural networks library for machine learning on PHP
Stars: ✭ 37 (+311.11%)
Mutual labels:  gpu, opencl
Arrayfire Python
Python bindings for ArrayFire: A general purpose GPU library.
Stars: ✭ 358 (+3877.78%)
Mutual labels:  gpu, opencl
Bohrium
Automatic parallelization of Python/NumPy, C, and C++ codes on Linux and MacOSX
Stars: ✭ 209 (+2222.22%)
Mutual labels:  gpu, opencl
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (+2455.56%)
Mutual labels:  gpu, opencl
Bitcracker
BitCracker is the first open source password cracking tool for memory units encrypted with BitLocker
Stars: ✭ 463 (+5044.44%)
Mutual labels:  gpu, opencl
Compute Runtime
Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver
Stars: ✭ 593 (+6488.89%)
Mutual labels:  gpu, opencl

DOI

GPU Sorting Algorithms in OpenCL

This is the result of a freestyle assignment for a GPU-Computing class at KIT in Summer 2016. Some of the source code (mostly the common code folder) was provided. I coded the sorting algorithms mergesort, bitonic mergesort and a bubble sort sorting network for OpenCL- Also there is a implementation of mergesort on CPU for comparison. See Sort.cl for Kernel-Code, CSortTask.cpp for most of the host code and CSortingMain.cpp for changing local work size and array size.

Standard Mergesort for GPU

Mostly not recommended because it does not benefit that well from parallelization. With bigger array size the graphics card will eventually run out of memory.

Bubble Sort Sorting Network

Called Simple Sorting Network (SSN) in Code. Not recommended because it is inefficient and slow.

Bitonic Mergesort

Recommended sorting variant of these three. Is fast and benefits well from parallelization.

How to Build

Best way is to use cmake with the Code folder as source folder. Use a 64-Bit compiler as otherwise bigger array sizes won't work.

Measurements

All measurements with randomly generated arrays of the given size. Times are in milliseconds. The CPU variant for comparison is a self written mergesort implementation that generally runs faster than std::sort.

Size CPU Mergesort SSN bitonic Mergesort
. Time Time Speedup Time Speedup Time Speedup
4 * 1024 0.313 2.365 0.132 0.996 0.314 0.434 0.721
64 * 1024 6.906 36.999 0.187 48.628 0.142 0.872 7.719
256 * 1024 28.498 177.689 0.160 703.28 0.041 2.018 14.122
2 * 1024 * 1024 253.282 1450.660 0.175 - - 24.680 10.262
64 *1024 * 1024 8861.330 - - - - 1192.820 7.429
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].