baracuda — idiomatic Rust wrappers for the NVIDIA CUDA stack.
Umbrella crate. Re-exports individual safe-API crates behind Cargo
features. All features are opt-in; defaults enable just driver +
runtime so downstream consumers pay for only what they use.
Feature matrix
| Feature | Re-exports |
|---|---|
driver |
[driver] — CUDA Driver API |
runtime |
[runtime] — CUDA Runtime API |
nvrtc |
[nvrtc] — runtime C++→PTX compiler |
nvjitlink |
[nvjitlink] — CUDA 12+ JIT linker |
cublas |
[cublas] — BLAS |
curand |
[curand] — RNG |
cufft |
[cufft] — FFT |
cusparse |
[cusparse] — sparse linear algebra |
cusolver |
[cusolver] — dense/sparse solvers |
cudnn |
[cudnn] — deep-learning primitives |
nccl |
[nccl] — multi-GPU collectives |
npp |
[npp] — performance primitives |
nvjpeg |
[nvjpeg] — GPU JPEG codec |
nvcomp |
[nvcomp] — GPU compression (scaffolding) |
cvcuda |
[cvcuda] — CV-CUDA (scaffolding) |
nvml |
[nvml] — driver-bundled GPU monitoring |
cufile |
[cufile] — GPUDirect Storage (Linux only) |
Bundles: math = cuBLAS + cuRAND + cuFFT + cuSPARSE + cuSOLVER;
imaging = NPP + nvJPEG + CV-CUDA; ml = driver + runtime + nvrtc +
nvjitlink + math + cuDNN + NCCL; full = ml + imaging + nvcomp +
nvml + cufile.
Quickstart
[]
= "0.1"
use baracuda::driver::{Context, Device, DeviceBuffer};
# fn main() -> baracuda::driver::Result<()> {
let device = Device::get(0)?;
let ctx = Context::new(&device)?;
let data = DeviceBuffer::from_slice(&ctx, &[1.0f32, 2.0, 3.0])?;
# let _ = data;
# Ok(())
# }
Shared vocabulary
[types] (always available, no feature flag) exposes Half,
BFloat16, Complex32, Complex64, DeviceRepr, CudaVersion,
etc. — the types shared across every safe crate.