MCPcopy Index your code
hub / github.com/cool-japan/oxicuda

github.com/cool-japan/oxicuda @v0.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.0 ↗ · + Follow
78,144 symbols 317,888 edges 4,455 files 20,280 documented · 26%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

OxiCUDA

Crates.io Documentation CI License

Pure Rust CUDA replacement -- cuBLAS, cuDNN, cuFFT, cuSPARSE, cuSOLVER, cuRAND and beyond in ~1.27M SLoC of safe Rust across 73 crates.

OxiCUDA replaces the entire NVIDIA CUDA Toolkit software stack with type-safe, memory-safe Rust code. The only runtime dependency is the NVIDIA driver (libcuda.so / nvcuda.dll); no CUDA SDK, no nvcc, no C/C++ toolchain is needed at build time. Optimized PTX assembly is generated directly from Rust data structures, and a built-in autotuner benchmarks kernel variants per GPU architecture to achieve near-peak throughput from Turing through Blackwell.

Architecture

+---------------------------------------------------------------+
|   SciRS2  |  OxiONNX  |  TrustformeRS  |  ToRSh              |
|   (Scientific Computing / ML / Inference Ecosystem)           |
+-------------------------------+-------------------------------+
                                |
+-------------------------------v-------------------------------+
|                         OxiCUDA                               |
|                     (Pure Rust GPU)                            |
|                                                               |
|  Vol.1 Foundation (4 crates)                                  |
|  +----------+ +--------+ +---------+ +---------+             |
|  | Driver   | | Memory | | Launch  | | Runtime |             |
|  +----------+ +--------+ +---------+ +---------+             |
|                                                               |
|  Vol.2 Codegen (2 crates)                                     |
|  +-----------+ +------------+                                 |
|  | PTX Gen   | | Autotune   |                                 |
|  +-----------+ +------------+                                 |
|                                                               |
|  Vol.3 Linear Algebra    Vol.4 Deep Learning                  |
|  +-------------+         +-------------+                      |
|  | BLAS        |         | DNN         |                      |
|  +-------------+         +-------------+                      |
|                                                               |
|  Vol.5 Scientific Computing (4 crates)                        |
|  +------+ +--------+ +--------+ +------+                     |
|  | FFT  | | Sparse | | Solver | | Rand |                     |
|  +------+ +--------+ +--------+ +------+                     |
|                                                               |
|  Vol.6 Signal    Vol.7 Comp.Graph  Vol.8 Training (2)         |
|  +---------+     +----------+      +-------+ +-------+        |
|  | Signal  |     | Graph    |      | Train | | Quant |        |
|  +---------+     +----------+      +-------+ +-------+        |
|                                                               |
|  Vol.9 Inference (3 crates)        Vol.10 RL                  |
|  +-------+ +------------+ +----+   +------+                   |
|  | Infer | | Dist-Infer | | LM |   |  RL  |                   |
|  +-------+ +------------+ +----+   +------+                   |
|                                                               |
|  Backends (7 crates)                                          |
|  +----------+ +--------+ +-------+ +--------+                 |
|  | backend  | | prims  | | Metal | | Vulkan |                 |
|  +----------+ +--------+ +-------+ +--------+                 |
|  +--------+ +-------+ +-----------+                           |
|  | WebGPU | | ROCm  | | LevelZero |                           |
|  +--------+ +-------+ +-----------+                           |
+-------------------------------+-------------------------------+
                                |
+-------------------------------v-------------------------------+
|              libcuda.so  (NVIDIA Driver, runtime only)        |
|              No SDK  /  No nvcc  /  No C Toolchain            |
+---------------------------------------------------------------+

Feature Highlights

Vol.1 -- Foundation (4 crates, 26,438 SLoC) - Dynamic driver loading via libloading -- zero build-time SDK dependency - DeviceBuffer<T> with Rust ownership semantics -- Send + Sync, RAII - Type-safe launch! macro with compile-time grid/block validation - CUDA Runtime API layer for high-level device management

Vol.2 -- PTX Codegen & Autotuner (2 crates, 47,429 SLoC) - Rust DSL that generates PTX IR covering SM 7.5 through SM 10.0 - Tensor Core support: WMMA, MMA, WGMMA instruction generation - Built-in autotuner with 3-tier dispatch (cached / tuned / default) - Disk-based PTX cache keyed by kernel hash + GPU architecture

Vol.3 -- BLAS (1 crate, 28,379 SLoC) - Full BLAS Level 1/2/3 (axpy, gemv, gemm, trsm, syrk, ...) - GEMM dispatch: SIMT, Tensor Core, Split-K paths - Batched GEMM: standard, strided, grouped - Precision coverage: F16, BF16, TF32, F32, F64, FP8 - Elementwise ops (relu, gelu, sigmoid, silu) and reductions (softmax, variance)

Vol.4 -- DNN (1 crate, 39,297 SLoC) - Convolution: implicit GEMM, im2col, Winograd 3x3, direct, fused Conv+BN+Act - FlashAttention forward/backward, PagedAttention, decode attention - MoE: top-k routing, token permutation, fused MoE kernel - Normalization: BatchNorm, LayerNorm, RMSNorm, GroupNorm - Pooling: max, average, adaptive, global - Resize: nearest, bilinear, bicubic - Quantization: FP8, INT8, block-scaled FP4

Vol.5 -- Scientific Computing (4 crates, 62,511 SLoC) - FFT: Stockham, radix-2/4/8, mixed-radix, Bluestein, C2C/R2C/C2R, 2D/3D - Sparse: CSR/CSC/COO/BSR/ELL, SpMV, SpMM, SpGEMM, SDDMM, ILU(0)/IC(0) - Solver: LU, QR, SVD, Cholesky, eigendecomp, CG, BiCGSTAB, GMRES - Rand: Philox, MRG32k3a, XORWOW, Sobol, uniform/normal/Poisson

Vol.6 -- Signal Processing (1 crate, 12,276 SLoC) - Audio: MFCC, STFT, Mel filterbank, spectral features - Image: Gaussian blur, Sobel edge detection, morphological ops - DCT: Types I-IV with fast algorithms - DWT: Haar, Daubechies wavelets - Filtering: IIR/FIR filters, Butterworth, Chebyshev - Correlation: cross-correlation, autocorrelation

Vol.7 -- Computation Graph (1 crate, 6,563 SLoC) - CUDA Graph capture API (StreamCapture, GraphCapture) - Execution plan with dependency-sorted node scheduling - Event-based inter-node synchronization - Sequential + parallel graph executors

Vol.8 -- GPU Training (2 crates, 13,832 SLoC) - Mixed precision training (AMP): FP16/BF16 + loss scaling - Gradient accumulation and clipping; EMA (exponential moving average) - LR schedulers: cosine, warmup, cyclic, polynomial - GPU-fused optimizers: Adam, AdamW, SGD, RMSProp, LAMB - Checkpointing (model save/load) - Quantization: INT8/INT4/FP8 weight quantization, block-scaled

Vol.9 -- Inference Engine (3 crates, 17,909 SLoC) - KV-cache with paged attention (PagedKvCache) and prefix caching - Speculative decoding - Distributed inference pipeline (tensor/pipeline parallelism) - LM inference: BPE tokenizer, vocabulary management, sampling strategies

Vol.10 -- Reinforcement Learning (1 crate, 11,280 SLoC) - Replay buffers: Uniform, Prioritized (PER), N-step - Policy distributions: Categorical, Gaussian (SAC reparameterization), Deterministic - Advantage estimators: GAE, TD(λ), V-trace, Retrace(λ) - Loss functions: PPO, DQN, Double-DQN, SAC, TD3 - Observation/reward normalization with Welford running stats - Environment abstractions: Env, VecEnv (auto-reset)

Backends (7 crates, 28,400 SLoC) - Backend trait abstraction for multi-GPU-runtime portability - CUB-equivalent GPU primitives (scan, reduce, sort, histogram) - Metal (macOS), Vulkan Compute, WebGPU, AMD ROCm, Intel oneAPI (LevelZero)

Pure Rust, Minimal Dependencies

OxiCUDA is built on a strict Pure Rust policy with minimal external dependencies. The entire codebase compiles with cargo build alone -- no C compiler, no Fortran runtime, no CUDA SDK, no nvcc, no pkg-config.

Dependency Purpose Type
libloading Dynamic .so/.dll loading at runtime Pure Rust
thiserror Ergonomic error type derivation Pure Rust
num-complex Complex number types (FFT) Pure Rust
half FP16/BF16 types (optional) Pure Rust
serde / serde_json Autotune result DB (optional) Pure Rust

The only runtime requirement is the NVIDIA GPU driver (libcuda.so on Linux, nvcuda.dll on Windows). On macOS the crate compiles but returns UnsupportedPlatform at runtime.

Quick Start

use oxicuda::prelude::*;

fn main() -> Result<(), oxicuda::Error> {
    // Initialize driver and select GPU device
    let device = Device::get(0)?;
    let ctx = Context::new(device)?;
    let stream = Stream::new(&ctx)?;

    // Allocate device memory
    let mut d_a = DeviceBuffer::<f32>::zeroed(1024)?;
    let mut d_b = DeviceBuffer::<f32>::zeroed(1024)?;
    let mut d_c = DeviceBuffer::<f32>::zeroed(1024)?;

    // Copy host data to device
    d_a.copy_from_host(&host_a)?;
    d_b.copy_from_host(&host_b)?;

    // Launch a GEMM: C = alpha * A @ B + beta * C
    let handle = BlasHandle::new(&stream)?;
    handle.gemm(
        Transpose::None, Transpose::None,
        m, n, k,
        1.0f32,            // alpha
        &d_a, lda,
        &d_b, ldb,
        0.0f32,            // beta
        &mut d_c, ldc,
    )?;

    stream.synchronize()?;

    // Copy result back to host
    let mut result = vec![0.0f32; m * n];
    d_c.copy_to_host(&mut result)?;
    Ok(())
}

Crate Overview

Crate CUDA Equivalent Description SLoC Tests
Vol.1 -- Foundation
oxicuda-driver Driver API FFI, device/context/stream/event/module 15,228 379
oxicuda-memory cuMemAlloc DeviceBuffer, PinnedBuffer, unified, pool 6,451 275
oxicuda-launch cuLaunchKernel Dim3, LaunchParams, launch! macro 5,112 214
oxicuda-runtime CUDA Runtime High-level cudaRT API layer 4,856 121
Vol.2 -- PTX Codegen & Autotuner
oxicuda-ptx nvcc / CUTLASS PTX IR, codegen DSL, Tensor Core gen 33,988 1,006
oxicuda-autotune -- Search space, benchmark, tuning DB 16,198 467
Vol.3 -- Linear Algebra
oxicuda-blas cuBLAS BLAS L1/L2/L3, GEMM, batched, elementwise 29,765 791
Vol.4 -- Deep Learning
oxicuda-dnn cuDNN Conv, attention, MoE, norm, pool, quantize 40,845 1,075
Vol.5 -- Scientific Computing
oxicuda-fft cuFFT Stockham, radix-2/4/8, Bluestein, 1D/2D/3D 15,764 427
oxicuda-sparse cuSPARSE CSR/CSC/COO/BSR/ELL, SpMV, SpMM, SpGEMM 16,320 417
oxicuda-solver cuSOLVER LU, QR, SVD, Cholesky, eig, CG, GMRES 24,587 530
oxicuda-rand cuRAND Philox, MRG32k3a, Sobol, distributions 14,384 433
Vol.6 -- Signal Processing
oxicuda-signal -- Audio/image DSP, DCT, DWT, IIR/FIR filters 14,381 508
Vol.7 -- Computation Graph
oxicuda-graph CUDA Graphs Graph capture, dep-sorted exec, events 8,362 299
Vol.8 -- GPU Training
oxicuda-train -- AMP, grad accum/clip, LR schedulers, optimizers 11,901 362
oxicuda-quant -- INT8/INT4/FP8 quantization, block-scaled 9,007 288
Vol.9 -- Inference Engine
oxicuda-infer -- KV-cache, paged attention, speculative decode 10,925 399
oxicuda-dist-infer -- Tensor/pipeline parallelism, distributed infer 7,735 239
oxicuda-lm -- BPE tokenizer, vocab, sampling strategies 7,252 275
Vol.10 -- Reinforcement Learning
oxicuda-rl -- Replay buffers, policy dists, PPO/DQN/SAC/TD3 12,473 453
Backends
oxicuda-backend -- Backend trait abstraction 4,038 101
oxicuda-primitives CUB GPU scan, reduce, sort, histogram 10,114 260
oxicuda-metal -- Metal compute backend (macOS) 7,287 255
oxicuda-vulkan -- Vulkan Compute backend 7,366 150
oxicuda-webgpu -- WebGPU backend 5,430 216
oxicuda-rocm -- AMD ROCm backend 6,523 213
oxicuda-levelzero -- Intel oneAPI / LevelZero backend 8,248 153
Vol.17 -- Generative AI
oxicuda-gen -- Diffusion (DDPM/DDIM/DPM-Solver++/Flow Matching), CFG, VAE, LoRA 16,612 596
Vol.18 -- Graph Neural Networks
oxicuda-gnn -- CSR/COO/Hetero graphs, GCN/GAT/GraphSAGE/GIN, pooling 19,452 670
Vol.19 -- State Space Models
oxicuda-mamba -- HiPPO-NPLR, S4D/S5 selective scan, Mamba SSM, RWKV 16,613 678
Vol.20 -- Vision Transformers
oxicuda-vision -- ViT, patch embedding, CLIP towers 22,299 853
Vol.21 -- Audio/Speech ML
oxicuda-audio -- Conformer, Wav2Vec2, CTC/RNN-T, WaveNet, SpecAugment, x-vector 24,396 853
Vol.22 -- Time-Series Forecasting
oxicuda-timeseries -- TCN, NHiTS, PatchTST, TimesNet, iTransformer, RevIN 22,887 711
Vol.23 -- Bayesian Deep Learning
oxicuda-bayes -- Variational inference, MC Dropout, Deep Ensembles, SWAG, Laplace 21,380 675
Vol.24 -- Federated Learning
oxicuda-federated -- FedAvg/FedProx/SCAFFOLD/FedAdam, DP, secure aggregation 12,084 502
Vol.25 -- Neural Architecture Search
oxicuda-nas -- DARTS, supernet, NSGA-II, hardware-aware FLOPs predictor 12,155 389
Vol.26 -- Self-Supervised Learning

Extension points exported contracts — how you extend this code

ComputeBackend (Interface)
Abstract compute backend trait. Implementations provide GPU-accelerated compute operations. All operations work with op [12 …
crates/oxicuda-backend/src/lib.rs
OdeSystem (Interface)
Right-hand side of an ODE system dy/dt = f(t, y). [6 implementers]
crates/oxicuda-solver/src/dense/ode_pde/types.rs
GpuFloat (Interface)
Trait for floating-point types that can be used in GPU BLAS kernels. Provides the mapping between Rust types and PTX re [6 …
crates/oxicuda-blas/src/types.rs
LrScheduler (Interface)
Common interface for all learning rate schedulers. [13 implementers]
crates/oxicuda-train/src/lr_scheduler.rs
Optimizer (Interface)
Trait for parameter optimizers. [5 implementers]
crates/oxicuda/src/tensor_backend/optimizer.rs
SerializeArg (Interface)
Helper trait to serialize a single value into a [`SerializedArg`]. Implemented for all common scalar types used in GPU [4 …
crates/oxicuda-launch/src/arg_serialize.rs
StreamingSketch (Interface)
Common interface for a mergeable streaming sketch over items of type `Item`. [4 implementers]
crates/oxicuda-sketch/src/stream/sketch_trait.rs
ProblemSpec (Interface)
A convex program that can classify itself ([`form`](ProblemSpec::form)) and hand itself to the matching backend ([`dispa [4 …
crates/oxicuda-cvx/src/problem.rs

Core symbols most depended-on inside this repo

map
called by 13997
crates/oxicuda-memory/src/virtual_memory.rs
iter
called by 11949
crates/oxicuda-lm/src/weights.rs
clone
called by 6092
crates/oxicuda-driver/src/ffi_launch.rs
enumerate
called by 4841
crates/oxicuda-autotune/src/search_space.rs
raw_ptx
called by 4064
crates/oxicuda-ptx/src/builder/body_builder/mod.rs
max
called by 3849
crates/oxicuda-pde/src/amr/error_estimator.rs
iter
called by 3702
crates/oxicuda-survival/src/data/risk_set.rs
sqrt
called by 3197
crates/oxicuda-pinn/src/autodiff/dual.rs

Shape

Function 54,230
Method 17,161
Class 5,911
Enum 801
Interface 41

Languages

Rust100%

Modules by API surface

crates/oxicuda-ptx/src/builder/body_builder/mod.rs146 symbols
crates/oxicuda-ptx/src/ir/instruction_tests.rs119 symbols
crates/oxicuda-ptx/src/builder/body_builder/body_builder_tests.rs118 symbols
crates/oxicuda-driver/src/device.rs97 symbols
crates/oxicuda-evol/src/benchmarks/bbob.rs95 symbols
crates/oxicuda-vulkan/src/backend.rs93 symbols
crates/oxicuda-dnn/src/dynamic_batch.rs91 symbols
crates/oxicuda-webgpu/src/backend_tests.rs84 symbols
crates/oxicuda/src/distributed.rs83 symbols
crates/oxicuda-ptx/src/analysis/constant_folding.rs83 symbols
crates/oxicuda-quant/src/scheme/gguf.rs78 symbols
crates/oxicuda-levelzero/src/spirv.rs78 symbols

For agents

$ claude mcp add oxicuda \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page