Coder Social home page Coder Social logo

shg8 / fuchsia_radix_sort Goto Github PK

View Code? Open in Web Editor NEW

This project forked from juliusikkala/fuchsia_radix_sort

0.0 0.0 0.0 1.4 MB

The Vulkan GPU radix sort implementation from Google Fuchsia, but with CMake

License: BSD 2-Clause "Simplified" License

C++ 3.06% C 74.92% CMake 1.54% GLSL 20.48%

fuchsia_radix_sort's Introduction

Fuchsia's Vulkan 1.2 radix sort with CMake support

This is the radix sort implementation from Google's Fuchsia operating system, but in a way that is easier to integrate into CMake codebases. My modifications are in moving the build system to CMake and changes in shader loading (they are compiled into the binary.) You can treat my changes as CC0, so you are just bound by the original LICENSE of this radix sort library.

Below is the original README:

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:

Vendor Architecture 32‑bit Keyvals 64‑bit Keyvals Notes
NVIDIA sm_35+
AMD GCN3+
AMD RDNA+ 64-wide subgroup
ARM Bifrost4
ARM Bifrost8
Intel GEN8+
Intel Xe+

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 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.
  • Possibly 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.

fuchsia_radix_sort's People

Contributors

juliusikkala avatar shg8 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.