stotko/stdgpu

stdgpu: Efficient STL-like Data Structures on the GPU

What it solves

Most GPU libraries focus on implementing fast algorithms that operate on contiguous data. stdgpu solves the lack of flexible, general-purpose data management on the GPU by providing a set of STL-like containers that allow developers to build more complex and flexible GPU algorithms similar to how they would on a CPU.

How it works

It is a lightweight C++17 library that implements generic GPU data structures across multiple backends, including CUDA, OpenMP, and HIP (experimental). It provides two levels of interaction:

  • Agnostic functions: High-level functions (like insert) that allow for shared C++ code.
  • Native functions: Low-level functions (like find) designed for use within custom CUDA kernels.

Who it’s for

Developers writing high-performance GPU code who need reliable data structures beyond simple arrays, specifically those building custom kernels or using frameworks like Thrust.

Highlights

  • STL-like Containers: Includes vector, unordered_map, unordered_set, deque, queue, stack, and bitset.
  • Multi-Backend Support: Compatible with CUDA, OpenMP, and HIP.
  • Interoperability: Works with Thrust GPU algorithms.
  • Minimal Dependencies: Designed as a lightweight library with minimal overhead.

Related

  • Project
  • Project
  • Project
  • Project