ironaccelerator_core/lib.rs
1//! # `ironaccelerator-core`
2//!
3//! Backend-agnostic foundation for **IronAccelerator** — a high-performance,
4//! agentic-first *driver substrate* spanning CUDA, ROCm, Metal, and Qualcomm
5//! NPUs. This crate intentionally contains *no* backend bindings; it defines
6//! the trait surface every backend implements plus the vendor-neutral
7//! descriptions of the things a driver actually owns: devices, capability
8//! bits, memory, streams, events, and kernel launch geometry.
9//!
10//! **Scope.** Nothing above the driver lives here. Workload descriptors,
11//! execution-strategy selection, tensor descriptors, quantization schemes,
12//! and CPU reference kernels belong to the inference engine layered on top
13//! ([IronWorks](https://github.com/nervosys/ironworks)), not to the substrate
14//! that talks to the driver.
15//!
16//! IronAccelerator prioritises **throughput over guard-rails**. Where a
17//! traditional safe wrapper would add bounds checks, allocation tracking, or
18//! synchronous teardown, we expose a `_unchecked` fast path and let the agent
19//! (or library author) opt back into safety.
20
21#![cfg_attr(not(feature = "std"), no_std)]
22#![allow(clippy::missing_safety_doc)]
23
24#[cfg(not(feature = "std"))]
25extern crate alloc;
26
27pub mod backend;
28pub mod capability;
29pub mod device;
30pub mod dtype;
31pub mod error;
32pub mod handle;
33pub mod kernel;
34pub mod memory;
35pub mod stream;
36
37pub use backend::{Backend, BackendKind, BackendRegistry};
38pub use capability::{Capability, CapabilityFlags, ComputeTier};
39pub use device::{Device, DeviceDescriptor, DeviceId, Vendor};
40pub use dtype::{DType, NumericClass};
41pub use error::{Error, Result};
42pub use kernel::{KernelLaunch, LaunchDims};
43pub use memory::{Allocation, MemoryKind, MemoryPool};
44pub use stream::{Event, Stream};