//! acpu โ€” pure Rust driver for Apple Silicon CPU compute
//!
//! direct access to every useful compute unit in M1โ€“M4:
//! matrix coprocessor (AMX), vector engine (NEON), numeric
//! extensions, sync primitives, and performance counters.
//!
//! memory via [`unimem::Block`] โ€” IOSurface-backed pinned pages
//! shared with GPU (aruminium) and ANE (rane). zero-copy by default.

pub mod convert;
pub mod crypto;
pub mod field;
pub mod gemm;
pub mod matrix;
pub mod numeric;
pub mod probe;
pub mod pulse;
pub mod sync;
pub mod vector;

// Memory foundation โ€” re-export for single-import convenience
pub use unimem::{Block, Layout, MemError, Tape};

pub use convert::{
    cast_bf16_f32, cast_f16_f32, cast_f32_bf16, cast_f32_f16, cast_f32_i8, cast_i8_f32,
};
pub use gemm::{matmul_bf16, matmul_f16, matmul_f32, matmul_f32_set, matmul_i8};
pub use matrix::Matrix;
pub use numeric::{bf16, complex, fp16, quant};
pub use probe::{scan, Chip, Feature, Features};
pub use pulse::Counters;
pub use sync::{affinity, prefetch};

use std::fmt;

/// all acpu errors
#[derive(Debug)]
pub enum CpuError {
    /// running on non-Apple-Silicon hardware
    ChipNotSupported,
    /// AMX_SET instruction failed
    AmxSetFailed,
    /// AMX operation error
    AmxOpFailed(String),
    /// libkperf.dylib not found or kpc access denied
    PmuNotAvailable,
    /// PMU counter configuration rejected
    PmuConfigFailed(String),
    /// required CPU extension absent on this chip
    FeatureNotAvailable(Feature),
    /// QoS class change failed
    AffinityFailed(String),
    /// sysctl query failed
    SysctlFailed(String),
}

impl fmt::Display for CpuError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::ChipNotSupported => write!(f, "not Apple Silicon"),
            Self::AmxSetFailed => write!(f, "AMX_SET failed"),
            Self::AmxOpFailed(s) => write!(f, "AMX op failed: {s}"),
            Self::PmuNotAvailable => write!(f, "PMU not available (libkperf.dylib)"),
            Self::PmuConfigFailed(s) => write!(f, "PMU config failed: {s}"),
            Self::FeatureNotAvailable(feat) => write!(f, "feature not available: {feat:?}"),
            Self::AffinityFailed(s) => write!(f, "affinity failed: {s}"),
            Self::SysctlFailed(s) => write!(f, "sysctl failed: {s}"),
        }
    }
}

impl std::error::Error for CpuError {}

pub type Result<T> = std::result::Result<T, CpuError>;

Synonyms

bbg/src/lib.rs
optica/src/lib.rs
zheng/src/lib.rs
nox/rs/lib.rs
honeycrisp/src/lib.rs
trident/src/lib.rs
lens/src/lib.rs
strata/src/lib.rs
rs/macros/src/lib.rs
strata/nebu/rs/lib.rs
honeycrisp/rane/src/lib.rs
lens/core/src/lib.rs
rs/mir-format/src/lib.rs
rs/core/src/lib.rs
hemera/wgsl/src/lib.rs
strata/kuro/rs/lib.rs
radio/iroh-ffi/src/lib.rs
cyb/src-tauri/src/lib.rs
strata/core/src/lib.rs
radio/iroh-docs/src/lib.rs
strata/compute/src/lib.rs
lens/porphyry/src/lib.rs
radio/cyber-bao/src/lib.rs
radio/iroh-relay/src/lib.rs
lens/assayer/src/lib.rs
lens/brakedown/src/lib.rs
radio/iroh-car/src/lib.rs
honeycrisp/unimem/src/lib.rs
honeycrisp/aruminium/src/lib.rs
lens/binius/src/lib.rs
hemera/rs/src/lib.rs
strata/ext/src/lib.rs
radio/iroh/src/lib.rs
radio/iroh-gossip/src/lib.rs
strata/proof/src/lib.rs
radio/iroh-blobs/src/lib.rs
radio/iroh-base/src/lib.rs
radio/iroh-dns-server/src/lib.rs
radio/iroh-willow/src/lib.rs
lens/ikat/src/lib.rs
rs/tests/macro-integration/src/lib.rs
cw-cyber/contracts/hub-networks/src/lib.rs
radio/tests/integration/src/lib.rs
cw-cyber/contracts/litium-core/src/lib.rs
strata/trop/wgsl/src/lib.rs
strata/kuro/wgsl/src/lib.rs
cw-cyber/contracts/hub-protocols/src/lib.rs
cw-cyber/contracts/cw-cyber-gift/src/lib.rs
strata/trop/rs/src/lib.rs
cw-cyber/contracts/cybernet/src/lib.rs
cw-cyber/contracts/hub-channels/src/lib.rs
strata/nebu/wgsl/src/lib.rs
cw-cyber/contracts/graph-filter/src/lib.rs
cw-cyber/contracts/litium-stake/src/lib.rs
trident/editor/zed/src/lib.rs
radio/iroh-ffi/iroh-js/src/lib.rs
cw-cyber/contracts/hub-tokens/src/lib.rs
cyb/cyb/cyb-services/src/lib.rs
cw-cyber/packages/hub-base/src/lib.rs
strata/genies/rs/src/lib.rs
cw-cyber/contracts/std-test/src/lib.rs
cw-cyber/packages/cyber-std-test/src/lib.rs
cw-cyber/contracts/litium-refer/src/lib.rs
strata/jali/rs/src/lib.rs
cw-cyber/contracts/hub-libs/src/lib.rs
cw-cyber/contracts/litium-wrap/src/lib.rs
cw-cyber/packages/cyber-std/src/lib.rs
strata/genies/wgsl/src/lib.rs
cw-cyber/contracts/hub-skills/src/lib.rs
strata/jali/wgsl/src/lib.rs
cw-cyber/contracts/cw-cyber-subgraph/src/lib.rs
radio/iroh/bench/src/lib.rs
cw-cyber/contracts/litium-mine/src/lib.rs
cw-cyber/contracts/cw-cyber-passport/src/lib.rs

Neighbours