atomr-accel-cuda 0.1.0

GPU acceleration via the actor model. Wraps NVIDIA CUDA libraries (cuBLAS, cuDNN, cuFFT, cuRAND, cuSOLVER, cuSPARSE, cuTENSOR, cuBLASLt, NVRTC, NCCL) as supervised atomr actors with generation-validated buffers and a uniform async surface.
Documentation
//! Kernel-actor wrappers around CUDA library handles (§3.2).
//!
//! Each library actor follows a uniform shape:
//!
//! * a `Real { handle, stream, completion, state, … }` variant holding
//!   the cudarc handle plus the per-actor caches it needs;
//! * a `Mock` variant for GPU-free tests;
//! * a `props(stream, allocator, completion, state)` constructor that
//!   panics with `"ContextPoisoned: <Lib>::new failed: …"` if the
//!   handle can't be created, so the supervisor restarts;
//! * a `mock_props()` constructor that replies `Unrecoverable("…not
//!   supported in mock mode")` to every variant.
//!
//! The shared kernel-enqueue body lives in
//! [`envelope::run_kernel`] — every library actor calls it instead of
//! reimplementing the validate / enqueue / spawn-completion-await /
//! reply / drop-keep-alive sequence.
//!
//! F2 ships: `BlasActor`, `CudnnActor`, `FftActor`, `RngActor`.
//! F3 adds: `SolverActor`, `BlasLtActor`, `NvrtcActor`.
//! F4 adds: `CollectiveActor` (NCCL).

pub mod envelope;
pub mod record;

mod blas;

pub use blas::{BlasActor, BlasMsg};

#[cfg(feature = "cudnn")]
mod cudnn_actor;
#[cfg(feature = "cudnn")]
pub use cudnn_actor::{
    ActivationKind, ActivationRequest, ConvForwardRequest, ConvParams, CudnnActor, CudnnMsg,
    SoftmaxRequest,
};

#[cfg(feature = "cufft")]
mod fft;
#[cfg(feature = "cufft")]
pub use fft::{FftActor, FftKind, FftMsg, PlanKey};

#[cfg(feature = "curand")]
mod rng;
#[cfg(feature = "curand")]
pub use rng::{RngActor, RngMsg};

#[cfg(feature = "cusolver")]
mod solver;
#[cfg(feature = "cusolver")]
pub use solver::{SolverActor, SolverMsg, Uplo};

#[cfg(feature = "cublaslt")]
mod blas_lt;
#[cfg(feature = "cublaslt")]
pub use blas_lt::{Activation, BlasLtActor, BlasLtMsg};

#[cfg(feature = "nvrtc")]
mod nvrtc;
#[cfg(feature = "nvrtc")]
pub use nvrtc::{KernelArg, KernelHandle, NvrtcActor, NvrtcMsg, NvrtcOpts};

#[cfg(feature = "nccl")]
mod collective;
#[cfg(feature = "nccl")]
pub use collective::{CollectiveActor, CollectiveMsg, ReduceOp};

#[cfg(feature = "cusparse")]
mod sparse;
#[cfg(feature = "cusparse")]
pub use sparse::{CsrMatrix, SparseActor, SparseMsg};

#[cfg(feature = "cutensor")]
mod tensor;
#[cfg(feature = "cutensor")]
pub use tensor::{TensorActor, TensorMsg, TensorSpec};