Skip to main content

TieredCache

Struct TieredCache 

Source
#[non_exhaustive]
pub struct TieredCache { /* private fields */ }
Expand description

Generic tiered cache for GPU buffers.

Tracks hot/cold buffers using the built-in LruPolicy. This is the vyre primitive that helix builds inference intelligence on top of.

Implementations§

Source§

impl TieredCache

Source

pub fn new(tiers: Vec<CacheTier>) -> Self

Create a new cache with the given tiers and a default LruPolicy.

Source

pub fn try_new(tiers: Vec<CacheTier>) -> Result<Self, BackendError>

Fallible version of Self::new.

§Errors

Returns vyre_driver::BackendError if cache access metadata cannot be reserved.

Source§

impl TieredCache

Source

pub fn with_policy(tiers: Vec<CacheTier>, policy: LruPolicy) -> Self

Create a new cache with a custom LRU policy.

Source

pub fn try_with_policy( tiers: Vec<CacheTier>, policy: LruPolicy, ) -> Result<Self, BackendError>

Fallible version of Self::with_policy.

§Errors

Returns vyre_driver::BackendError if cache access metadata cannot be reserved.

Source

pub fn get(&self, key: u64) -> Option<&CacheEntry>

Return a reference to the entry with the given key, if it exists.

Source

pub fn insert(&mut self, key: u64, size: u64) -> Result<(), CacheError>

Insert a new entry into the lowest tier that can fit it.

§Errors

Returns CacheError::EntryTooLarge when no tier can hold the entry.

Source

pub fn record_access(&mut self, key: u64)

Record an access for the given key.

Source

pub fn promote(&mut self, key: u64) -> Result<(), CacheError>

Promote the entry to the next faster tier if the policy allows it.

§Errors

Returns CacheError::KeyNotFound when the key does not exist.

Source

pub fn demote(&mut self, key: u64) -> Result<(), CacheError>

Demote the entry to the next slower tier.

§Errors

Returns CacheError::KeyNotFound when the key does not exist.

Source

pub fn evict_coldest(&mut self) -> Option<u64>

Find and remove the coldest entry from the cache.

This follows the LRU policy across all tiers, starting from the lowest (coldest) tier. Returns the key of the evicted entry.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more