libmir-cuda 0.1.0

CUDA inference backend for libmir
use crate::{Error, Result};

/// Explicit allocation policy for one CUDA model session.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct CudaModelSessionConfig {
    /// Maximum prompt tokens uploaded in one pinned-host transfer.
    pub prefill_chunk_tokens: usize,
}

impl Default for CudaModelSessionConfig {
    fn default() -> Self {
        Self { prefill_chunk_tokens: 256 }
    }
}

impl CudaModelSessionConfig {
    pub(super) fn validate(self) -> Result<Self> {
        if self.prefill_chunk_tokens == 0 {
            Err(Error::InvalidDecoderKernel("CUDA prefill chunk cannot be empty"))
        } else {
            Ok(self)
        }
    }
}