PatwinchIR / ultra-sort

DSL for SIMD Sorting on AVX2 & AVX512

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ultra-Sort License: MIT

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:

  1. Compile from CMakelist.txt
  2. 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.

About

DSL for SIMD Sorting on AVX2 & AVX512

License:MIT License


Languages

Language:C++ 97.9%Language:Python 1.6%Language:CMake 0.4%Language:C 0.1%