A C++17 library providing efficient STL-like data structures (vector, unordered_map, etc.) for GPU programming with CUDA, OpenMP, and HIP backends.
stdgpu is a C++ library that provides efficient STL-like data structures for GPU programming, enabling developers to manage data on GPUs with familiar container interfaces. It solves the problem of flexible and reliable data management in GPU algorithms by offering generic containers like vector, unordered_map, and unordered_set that work directly in GPU memory. The library supports multiple backends including CUDA, OpenMP, and HIP, making it versatile for different parallel computing environments.
C++ developers and researchers working on GPU-accelerated applications, particularly in fields like real-time 3D reconstruction, computer vision, scientific computing, and high-performance computing who need efficient data structures on the GPU.
Developers choose stdgpu because it provides a specialized, lightweight container library for GPUs that complements existing algorithm-focused libraries like thrust. Its unique selling point is the dual interface design allowing both high-level agnostic code and low-level native kernel integration, along with multi-backend support for maximum flexibility in GPU programming.
stdgpu: Efficient STL-like Data Structures on the GPU
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports CUDA, OpenMP, and experimental HIP backends, allowing integration into diverse GPU environments without vendor lock-in, as highlighted in the features.
Offers both high-level agnostic functions for shared code and low-level native functions for custom kernels, enabling flexible GPU programming, demonstrated in the SLAMCast examples.
Implements vector, unordered_map, unordered_set, and other containers on GPU, reducing the learning curve for C++ developers accustomed to CPU STL.
A minimal C++17 library with few dependencies, focusing solely on container functionality to avoid bloat, as stated in the philosophy.
HIP support is marked as experimental, which may lead to bugs or incomplete features for AMD GPU users, limiting cross-platform reliability.
Only provides data structures, requiring integration with external libraries like thrust for algorithms, adding complexity and setup overhead.
Inherently demands expertise in GPU parallel computing, making it less accessible for developers without experience in CUDA, OpenMP, or HIP.