Supported Features#
This appendix presents the cuda-oxide feature matrix: every compiler capability, runtime API, and hardware feature along with its current support status. The data is drawn from the compiler/runtime sources and the test suite.
Legend: Full = tested and working, Partial = ships and works but has a known gap (called out in the row description), Planned = on the roadmap, N/A = not applicable or no identified need.
Compiler: Memory Model#
Feature |
Status |
Description |
|---|---|---|
HMM / Unified Memory Management |
Full |
GPU directly reads/writes host memory without |
Unified Struct ABI (no |
Full |
Device struct layout matches host exactly. The compiler queries rustc’s actual layout and reproduces it with explicit padding in LLVM IR. Works with |
Dynamic Layout Matching |
Full |
Compiler queries rustc’s |
Pointer Distance ( |
Full |
|
Volatile Load/Store |
Full |
|
Bulk Copy ( |
Full |
|
Compiler: Type System#
Feature |
Status |
Description |
|---|---|---|
Generics and Monomorphization |
Full |
Generic kernels and device functions with trait bounds. Monomorphized instances collected from rustc MIR. Const generics supported. |
Enums ( |
Full |
Full enum support including discriminant extraction and payload access. Pattern matching on enums works. |
Struct Construction and Field Access |
Full |
Struct literals, field access, pass-by-value and return values. User-defined structs supported without annotations. |
Array Types ( |
Full |
Static construction, constant- and runtime-index access. Array value constants (bare and nested) materialized. Mutable arrays auto-promoted to memory-backed. |
|
Full |
Generic SIMD register type with named accessors ( |
ABI Scalarization |
Full |
Slices are scalarized at kernel boundaries ( |
Array value constants are limited to primitive leaves (integers, f16,
f32, f64) and nested arrays of those. Arrays whose elements are
structs or other ADTs are not yet materialized as constants; they need
layout-aware field decoding rather than the primitive byte-slicing rule.
Compiler: Closures#
Feature |
Status |
Description |
|---|---|---|
Move Closures ( |
Full |
Closures that capture by value. The whole closure struct is pushed as one byval kernel argument. |
Reference Closures ( |
Full |
Non-move closures that capture by reference. The closure struct (containing host pointers) still travels as one byval argument; the GPU reads through those pointers via HMM. |
Host-to-Device Closures |
Full |
Closures defined on host passed to generic kernels. Polynomial evaluation with captured coefficients tested. |
Device-Internal Closures |
Full |
Closures created and used entirely on device, including closures passed to device functions. |
Compiler: Control Flow#
Feature |
Status |
Description |
|---|---|---|
Match Expressions (integer switch) |
Full |
Multi-way match on integers. Generates chain of conditional branches. |
Match on Enums |
Full |
Pattern matching on |
For Loops (range, iterator, enumerate) |
Full |
Full iterator desugaring: range-based, |
While Loops / If-Else |
Full |
Baseline control flow fully supported. |
Break and Continue |
Full |
|
Loop Unroll Annotations |
Partial |
|
Compiler: Arithmetic and Casting#
Feature |
Status |
Description |
|---|---|---|
64-bit Arithmetic |
Full |
Full 64-bit integer arithmetic including shifts, bitwise ops, and descriptor field packing. |
Type Casting (all kinds) |
Full |
IntToInt, IntToFloat, FloatToInt, FloatToFloat, Transmute (bitcast), PtrToPtr, PtrToInt, IntToPtr, pointer coercions. |
Packed bf16x2 FMA |
Full |
|
Compiler: Interop#
Feature |
Status |
Description |
|---|---|---|
Bi-directional LTOIR Support |
Full |
Rust kernels call CUDA C++ device functions and C++ calls Rust device functions. Via NVVM IR → libNVVM → LTOIR → nvJitLink. |
Device FFI ( |
Full |
|
MathDx FFI (cuFFTDx / cuBLASDx) |
Full |
cuFFTDx (8/16/32-point thread-level FFT), cuBLASDx (32x32x32 block-level GEMM) via LTOIR. |
Tile interop |
Experimental |
Inter-kernel interop works today: a cutile-rs Tile kernel and a cuda-oxide SIMT PTX kernel can run in one host process on the same CUDA stream over shared device tensors. Intra-kernel Tile interop is work in progress and tracked in #96. |
Cross-Crate Kernels |
Full |
Kernels and device functions defined in library crates with monomorphization at the binary crate use site. |
Compiler: Functions#
Feature |
Status |
Description |
|---|---|---|
|
Full |
Marks functions as GPU kernel entry points ( |
|
Full |
Device-side helper functions callable from kernels. |
Standalone |
Full |
Device functions compiled without any kernel present. Clean export names for C++ consumption. |
Multi-Kernel Modules |
Full |
Multiple |
Compiler: Compilation Pipeline#
Feature |
Status |
Description |
|---|---|---|
Unified Single-Source Compilation |
Full |
Host and device code in the same file. Custom rustc codegen backend intercepts codegen. No |
PTX Output |
Full |
Default output: Rust MIR → |
NVVM IR Output |
Full |
Selects LLVM 7 typed-pointer syntax for pre-Blackwell GPUs and opaque-pointer syntax for Blackwell and newer GPUs. The generated module is verified by libNVVM, and unsupported legacy operations produce a compile error. |
LTOIR Linking |
Full |
Device-side LTO via libNVVM and nvJitLink. |
Float Math Intrinsics (libdevice) |
Full |
Rust |
Pipeline Inspection |
Full |
|
Compute Sanitizer Wrapper |
Full |
|
cuda-gdb Source Debugging |
Full |
|
cuda-gdb Local / Argument Inspection |
Partial |
|
Compiler: Inline PTX#
Feature |
Status |
Description |
|---|---|---|
|
Partial |
CUDA inline PTX with |
Runtime Library: Safety#
Feature |
Status |
Description |
|---|---|---|
|
Full |
Bounds-checked parallel write output slice. |
|
Full |
Opaque, non-transferable witness. |
|
Full |
Checked, reusable launch geometry branded for the exact kernel. Raw |
|
Full |
Compile-time barrier lifecycle: |
Runtime Library: Atomics#
Feature |
Status |
Description |
|---|---|---|
Device-Scope Atomics |
Full |
|
Block-Scope Atomics |
Full |
|
System-Scope Atomics |
Full |
|
|
Full |
Standard library atomic types lowered to PTX |
Runtime Library: Thread and Synchronization#
Feature |
Status |
Description |
|---|---|---|
Thread/Block/Grid Intrinsics |
Full |
|
Block Synchronization |
Full |
|
Async Barriers (mbarrier) |
Full |
Hardware async barriers for Hopper+: init, arrive, test_wait, try_wait, inval. |
Cluster Synchronization |
Full |
|
Fence Operations |
Full |
|
Runtime Library: Warp#
Feature |
Status |
Description |
|---|---|---|
Warp Shuffle Operations |
Full |
|
Warp Vote Operations |
Full |
|
Lane/Warp ID |
Full |
|
Runtime Library: Cooperative Groups#
Feature |
Status |
Description |
|---|---|---|
Typed Group Handles |
Full |
|
Group Universal API |
Full |
|
Warp Tile Partitioning |
Full |
|
Warp Collectives |
Full |
|
Warp Reductions / Scans |
Full |
|
Block Reductions / Scans |
Full |
|
Cooperative Kernel Launch |
Full |
|
Runtime Library: Debug#
Feature |
Status |
Description |
|---|---|---|
|
Full |
Formatted GPU output with full format specifier support. Lowers to |
|
Full |
Runtime GPU assertion. Calls |
Debug Intrinsics |
Full |
|
Runtime Library: Kernel Launch#
Feature |
Status |
Description |
|---|---|---|
|
Full |
Embedded module loading with typed sync/async arguments. Raw configuration methods are unsafe. |
|
Full |
Checked dimensionality, exact block shape, resources, capabilities, context, and kernel identity. |
|
Full |
Unsafe lower-level launch for runtime-loaded modules; requires |
|
Full |
Unsafe lower-level lazy launch; requires |
|
Full |
Occupancy hints: max threads per block, min blocks per SM. |
|
Full |
Compile-time cluster dimensions. Emits |
Runtime Library: TMA#
Feature |
Status |
Description |
|---|---|---|
TMA Bulk Tensor Copy (1D–5D) |
Full |
|
TMA Multicast |
Full |
Single TMA load broadcast to all CTAs in cluster. sm_100a for full multicast. |
TMA Commit/Wait Groups |
Full |
|
Not Yet Implemented#
Feature |
Status |
Notes |
|---|---|---|
Rust |
Planned |
Use |
FP8 / MX Data Types |
Planned |
Roadmap item for Blackwell. No architectural limitation. |
Dynamic Dispatch ( |
N/A |
Use generics with static dispatch. Haven’t found a real need for this. |
Heap Allocation ( |
N/A |
CUDA has a device-side heap ( |
|
N/A |
Use |
Panic / Unwinding |
N/A |
Panic paths exist in MIR but the compiler strips |
Standard Library ( |
N/A |
|
Texture Memory |
N/A |
Lower priority given TMA availability on Hopper+. |