tree: e50b64db990b39eab6ab18ea36a59ddf4683bff7 [path history] [tgz]
  1. docs/
  2. platforms/
  3. BUILD.gn
  4. README.md
src/graphics/lib/compute/radix_sort/README.md

RadixSort/VK

RadixSort/VK is a high-performance sorting library for Vulkan 1.2.

Features include:

  • Ultra-fast stable sorting of 32‑bit or 64‑bit keyvals
  • Key size is declared at sort time
  • Indirectly dispatchable
  • Simple to integrate in a Vulkan 1.2 environment

Usage

See radix_sort_vk.h.

Device Support

The following architectures are supported:

VendorArchitecture32‑bit Keyvals64‑bit KeyvalsNotes
NVIDIAsm_35+
AMDGCN3+
AMDRDNA+64-wide subgroup
ARMBifrost4
ARMBifrost8
IntelGEN8+
IntelXe+
GoogleSwiftShader
MesaLavaPipe

Benchmarks

NVIDIA GeForce RTX 2060

NVIDIA GeForce RTX 2060

NVIDIA Quadro K2200

NVIDIA Quadro K2200

AMD Radeon RX 6600 XT

AMD Radeon RX 6600 XT

AMD Radeon RX 560

AMD Radeon RX 560

Intel Xe Graphics (TGL GT2)

Intel Xe Graphics (TGL GT2)

Intel HD Graphics 615

Intel HD Graphics 615

ARM Mali G52

ARM Mali G52

ARM Mali G31

ARM Mali G31

Future Improvements

  • 96-bit and 128-bit keyval support.
  • Reduce GMEM transactions by accumulating stores that share the same transaction boundary.

References

  • Merrill, Duane and Michael Garland. “Single-pass Parallel Prefix Scan with Decoupled Lookback.” (2016).
  • Adinets, Andy. “A Faster Radix Sort Implementation.” NVIDIA GTC 2020.