NVIDIA/raft
RAFT contains fundamental widely-used algorithms and primitives for machine learning and information retrieval. The algorithms are CUDA-accelerated and form building blocks for more easily writing high performance applications.
What it solves
RAFT provides a collection of CUDA-accelerated fundamental algorithms and primitives for machine learning and data mining. It solves the problem of repetitive implementation of core computations by providing reusable building blocks, which reduces development time and maintenance burdens while centralizing optimizations for high-performance applications.
How it works
RAFT is implemented as a C++ header-only template library, with an optional shared library to improve compile times and provide runtime APIs. It leverages the RAPIDS Memory Manager (RMM) for memory allocation and uses mdspan and mdarray for multi-dimensional data representation. To make these tools accessible to different environments, it offers two Python libraries: pylibraft for lightweight wrappers around the runtime APIs and raft-dask for multi-node, multi-GPU distributed algorithm infrastructure via Dask.
Who it’s for
It is designed for data source providers and application developers who need low-level primitives to accelerate their workflows. It is not intended for data scientists performing discovery and experimentation.
Highlights
- Broad Algorithmic Support: Includes accelerated functions for dense and sparse linear algebra, solvers, statistics, and data format conversions.
- Interoperability:
pylibraftsupports the__cuda_array_interface__, allowing zero-copy integration with CuPy, PyTorch, JAX, TensorFlow, and RAPIDS cuDF. - Distributed Computing: Provides infrastructure for building distributed GPU algorithms across multiple nodes and GPUs using Dask.
- Flexible C++ Design: Header-only template architecture allows for easy integration into C++ projects.