magyarsort/simd-sort/README.rst

49 lines
1.6 KiB
ReStructuredText

================================================================================
SIMD sorting
================================================================================
Overview
--------------------------------------------------
This repository contains SIMD versions of quicksort, using **AVX512F**
and **AVX2** instruction sets. The subdirectory ``results`` contains
performance results.
The code is still unfinished, it may be subject of changes.
Although programs are written in C++, most procedures are nearly
plain C, except use of namespaces and references in place of
pointers.
Building
--------------------------------------------------
At least GCC 5.3.0 is needed. Type ``make`` to build AVX512F
and AVX2 versions of two programs:
* ``test``/``test_avx2`` --- tests if SIMD-ized sorting procedures
work correctly for various inputs.
* ``speed``/``speed_avx2`` --- compares speed of different procedures,
scalar and SIMD for various inputs.
* ``speed_stats``/``speed_avx2_stats`` --- similar to ``speed``, but
some procedures collect and print runtime statistics. Note that
this gives overhead, so for real performance tests the basic variant
of the programs should be used.
AVX512
--------------------------------------------------
`Intel Software Development Emulator`__ can be used to run AVX512 variants.
__ https://software.intel.com/en-us/articles/intel-software-development-emulator
References
--------------------------------------------------
- Fast Sorting Algorithms using AVX-512 on Intel Knights Landing https://arxiv.org/pdf/1704.08579.pdf