RAFT: Reusable Accelerated Functions and Tools
-RAFT contains fundamental widely-used algorithms and primitives for data science, graph and machine learning. The algorithms are CUDA-accelerated and form building-blocks for rapidly composing analytics in the [RAPIDS](https://rapids.ai) ecosystem.
+RAFT contains fundamental widely-used algorithms and primitives for data science, graph and machine learning. The algorithms are CUDA-accelerated and form building-blocks for rapidly composing analytics.
-By taking a primitives-based approach to algorithm development, RAFT
+By taking a primitives-based approach to algorithm development, RAFT
- accelerates algorithm construction time
- reduces the maintenance burden by maximizing reuse across projects, and
-- centralizes the core computations, allowing future optimizations to benefit all algorithms that use them.
+- centralizes core reusable computations, allowing future optimizations to benefit all algorithms that use them.
-The algorithms in RAFT span the following general categories:
+While not exhaustive, the following general categories help summarize the accelerated functions in RAFT:
#####
| Category | Examples |
| --- | --- |
| **Data Formats** | sparse & dense, conversions, data generation |
-| **Data Generation** | sparse, spatial, machine learning datasets |
| **Dense Linear Algebra** | matrix arithmetic, norms, factorization, least squares, svd & eigenvalue problems |
| **Spatial** | pairwise distances, nearest neighbors, neighborhood graph construction |
| **Sparse Operations** | linear algebra, eigenvalue problems, slicing, symmetrization, labeling |
@@ -23,18 +22,15 @@ The algorithms in RAFT span the following general categories:
RAFT provides a header-only C++ library and pre-compiled shared libraries that can 1) speed up compile times and 2) enable the APIs to be used without CUDA-enabled compilers.
-RAFT also provides a Python library that is currently limited to
-1. a python wrapper around the `raft::handle_t` for managing cuda library resources
-2. definitions for using `raft::handle_t` directly in cython
-3. tools for building multi-node multi-GPU algorithms that leverage [Dask](https://dask.org/)
-
-The Python API is being improved to wrap the algorithms and primitives from the categories above.
+RAFT also provides 2 Python libraries:
+- `pylibraft` - low-level Python wrappers around RAFT algorithms and primitives.
+- `pyraft` - reusable infrastructure for building analytics, including tools for building both single-GPU and multi-node multi-GPU algorithms.
## Getting started
-### Rapids Memory Manager (RMM)
+### RAPIDS Memory Manager (RMM)
-RAFT relies heavily on RMM which, like other projects in the RAPIDS ecosystem, eases the burden of configuring different allocation strategies globally across the libraries that use it.
+RAFT relies heavily on RMM which eases the burden of configuring different allocation strategies globally across the libraries that use it.
### Multi-dimensional Arrays
@@ -48,9 +44,9 @@ The `mdarray` forms a convenience layer over RMM and can be constructed in RAFT
int n_rows = 10;
int n_cols = 10;
-auto scalar = raft::make_device_scalar(handle, 1.0);
-auto vector = raft::make_device_vector(handle, n_cols);
-auto matrix = raft::make_device_matrix(handle, n_rows, n_cols);
+auto scalar = raft::make_device_scalar