ultra-sort
ultra-sort copied to clipboard
DSL for SIMD Sorting on AVX2 & AVX512
Ultra-Sort 
Extremely Parallelized SIMD Sorting Algorithm. (All references are in the report.)
Speedup achieved sorting 2^20 elements
Compared with std::stable_sort
, std::sort
, ips4o::sort
, pdqsort
.
Usage:
- Compile from
CMakelist.txt
- Due to integration with
OpenMP
, run the executable after build using the command below:
export OMP_NUM_THREADS=1; ./ultrasort
By default, this will run all unit tests set up using GTest
.
To use this library in other projects simply include the header files:
#include "avx512/simd_sort.h"
avx512::SIMD_Sort(...); // avx256::... for AVX2 version.
The number of elements to sort is required to be a power of 2. More examples can be found at test/avx512/simd_sort_test.cpp
.