← Back

Module backends

trait ComputeBackend: Send + Sync

Trait for compute backends

Source: backends.joule:25

fn name(&self) -> &str;

Backend name

Source: backends.joule:27

fn engine(&self) -> Engine;

Associated engine type

Source: backends.joule:30

fn is_available(&self) -> bool;

Check if backend is available on this system

Source: backends.joule:33

fn supported_dtypes(&self) -> Vec<ComputeDType>;

Supported data types

Source: backends.joule:36

fn gemm_f32(

Execute GEMM: C = alpha * A @ B + beta * C

Source: backends.joule:39

fn gemm_f16(

Execute GEMM with half precision

Source: backends.joule:57

fn sync(&self);

Synchronize (wait for completion)

Source: backends.joule:75

struct AccelerateBackend

Apple Accelerate framework backend for CPU Uses vecLib/BLAS for linear algebra, vDSP for signal processing, BNNS (Basic Neural Network Subroutines) for neural network ops

Source: backends.joule:85

fn new() -> Self

Create new Accelerate backend

Source: backends.joule:91

fn instance() -> &'static Self

Get singleton instance

Source: backends.joule:103

fn name(&self) -> &str

Source: backends.joule:110

fn engine(&self) -> Engine

Source: backends.joule:114

fn is_available(&self) -> bool

Source: backends.joule:118

fn supported_dtypes(&self) -> Vec<ComputeDType>

Source: backends.joule:122

fn gemm_f32(

Source: backends.joule:134

fn gemm_f32(

Source: backends.joule:212

fn gemm_f16(

Source: backends.joule:231

fn sync(&self)

Source: backends.joule:286

fn default() -> Self

Source: backends.joule:292

struct MetalBackend

Metal Performance Shaders backend for GPU Uses MPS for optimized neural network and linear algebra operations

Source: backends.joule:303

fn new() -> Self

Create new Metal backend

Source: backends.joule:311

fn instance() -> &'static Self

Get singleton instance

Source: backends.joule:327

fn device_name(&self) -> String

Source: backends.joule:334

fn device_name(&self) -> String

Source: backends.joule:340

fn name(&self) -> &str

Source: backends.joule:346

fn engine(&self) -> Engine

Source: backends.joule:350

fn is_available(&self) -> bool

Source: backends.joule:354

fn supported_dtypes(&self) -> Vec<ComputeDType>

Source: backends.joule:358

fn gemm_f32(

Source: backends.joule:370

fn gemm_f32(

Source: backends.joule:412

fn gemm_f16(

Source: backends.joule:432

fn gemm_f16(

Source: backends.joule:501

fn sync(&self)

Source: backends.joule:520

fn default() -> Self

Source: backends.joule:526

struct CoreMLBackend

Core ML backend for Neural Engine Uses Core ML for neural network inference on the ANE

Source: backends.joule:537

fn new() -> Self

Create new Core ML backend

Source: backends.joule:543

fn instance() -> &'static Self

Get singleton instance

Source: backends.joule:558

fn compile_mlprogram(&self, _spec: &MLProgramSpec) -> Result<CompiledModel, CoreMLError>

Source: backends.joule:565

fn compile_mlprogram(&self, _spec: &MLProgramSpec) -> Result<CompiledModel, CoreMLError>

Source: backends.joule:578

fn predict(&self, _model: &CompiledModel, _inputs: &[*const u8]) -> Result<Vec<*mut u8>, CoreMLError>

Source: backends.joule:584

fn predict(&self, _model: &CompiledModel, _inputs: &[*const u8]) -> Result<Vec<*mut u8>, CoreMLError>

Source: backends.joule:594

fn name(&self) -> &str

Source: backends.joule:600

fn engine(&self) -> Engine

Source: backends.joule:604

fn is_available(&self) -> bool

Source: backends.joule:608

fn supported_dtypes(&self) -> Vec<ComputeDType>

Source: backends.joule:612

fn gemm_f32(

Source: backends.joule:621

fn gemm_f16(

Source: backends.joule:642

fn sync(&self)

Source: backends.joule:662

fn default() -> Self

Source: backends.joule:668

struct MLProgramSpec

Source: backends.joule:679

struct TensorSpec

Source: backends.joule:692

enum MLOp

Source: backends.joule:700

enum ComputeUnits

Source: backends.joule:777

struct CompiledModel

Source: backends.joule:790

enum CoreMLError

Source: backends.joule:797

struct BackendRegistry

Global backend registry

Source: backends.joule:809

fn new() -> Self

Create new registry with all backends

Source: backends.joule:817

fn instance() -> &'static Self

Get singleton instance

Source: backends.joule:826

fn get(&self, engine: Engine) -> &dyn ComputeBackend

Get backend for engine type

Source: backends.joule:832

fn accelerate(&self) -> &AccelerateBackend

Get Accelerate backend

Source: backends.joule:842

fn metal(&self) -> &MetalBackend

Get Metal backend

Source: backends.joule:847

fn coreml(&self) -> &CoreMLBackend

Get Core ML backend

Source: backends.joule:852

fn available_backends(&self) -> Vec<Engine>

List available backends

Source: backends.joule:857

fn print_info(&self)

Print backend information

Source: backends.joule:872

fn default() -> Self

Source: backends.joule:895

fn gemm_auto(

Execute GEMM on best available backend

Source: backends.joule:905

fn build_transformer_layer_mlprogram(

Build MLProgram for transformer layer

Source: backends.joule:950

fn f16_to_f32(h: u16) -> f32

Convert an IEEE 754 half-precision float (stored as u16) to f32.

Source: backends.joule:1104

fn f32_to_f16(f: f32) -> u16

Convert an f32 to IEEE 754 half-precision float (stored as u16).

Source: backends.joule:1137

fn test_backend_availability()

Source: backends.joule:1182

fn test_mlprogram_builder()

Source: backends.joule:1194