instmodel_inference 0.9.0

High-performance neural network inference library with instruction-based execution
Documentation
use thiserror::Error;

#[derive(Error, Debug)]
pub enum ParallelPredictError {
    #[error(
        "Input buffer size mismatch: expected {expected} f32 values ({num_samples} samples * {feature_size} features), got {actual}"
    )]
    InputBufferSizeMismatch {
        expected: usize,
        actual: usize,
        num_samples: usize,
        feature_size: usize,
    },

    #[error("Invalid slice range: start ({start}) must be less than end ({end})")]
    InvalidSliceRange { start: usize, end: usize },

    #[error("Slice range out of bounds: range [{start}..{end}) exceeds buffer size {buffer_size}")]
    SliceRangeOutOfBounds {
        start: usize,
        end: usize,
        buffer_size: usize,
    },

    #[error("Thread count must be at least 1, got {count}")]
    InvalidThreadCount { count: usize },

    #[error("Result index {index} is out of bounds for {num_samples} samples")]
    ResultIndexOutOfBounds { index: usize, num_samples: usize },

    #[error("Destination buffer size mismatch: expected {expected}, got {actual}")]
    DestinationBufferSizeMismatch { expected: usize, actual: usize },

    #[error("Model prediction failed for sample {sample_index}: {message}")]
    PredictionFailed {
        sample_index: usize,
        message: String,
    },

    #[error("Thread panicked during parallel execution")]
    ThreadPanicked,
}

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