pub struct DeoptGuard { /* private fields */ }Expand description
Tracks deopted kernels by their blueprint fingerprint.
Implementations§
Source§impl DeoptGuard
impl DeoptGuard
Sourcepub fn with_metrics(metrics: TensorWasmMetrics) -> Self
pub fn with_metrics(metrics: TensorWasmMetrics) -> Self
Construct an empty guard that also publishes success / fallback events
to the supplied tensor_wasm_core::metrics::TensorWasmMetrics handle. The handle is
Arc-backed and cheap to clone — pass the same handle used by the rest
of the process so the tensor_wasm_offload_success_total and
tensor_wasm_offload_fallback_total counters reflect the kernels driven by
this guard.
Sourcepub fn is_deopted(&self, fingerprint: u64) -> bool
pub fn is_deopted(&self, fingerprint: u64) -> bool
Returns true if the blueprint is currently deopted.
Sourcepub fn record_deopt(&self, fingerprint: u64, reason: DeoptReason)
pub fn record_deopt(&self, fingerprint: u64, reason: DeoptReason)
Record a deopt event. Increments the fallback counter (and, if metrics
are wired, the tensor_wasm_offload_fallback_total Prometheus counter).
Sourcepub fn record_success(&self)
pub fn record_success(&self)
Record a successful GPU execution. Increments the success counter (and,
if metrics are wired, the tensor_wasm_offload_success_total Prometheus
counter).
Sourcepub fn clear_deopt(&self, fingerprint: u64) -> Option<DeoptReason>
pub fn clear_deopt(&self, fingerprint: u64) -> Option<DeoptReason>
Reset deopt status for a fingerprint (e.g. after a kernel-cache invalidation that recompiles the PTX).
Sourcepub fn reason(&self, fingerprint: u64) -> Option<DeoptReason>
pub fn reason(&self, fingerprint: u64) -> Option<DeoptReason>
Reason for the most recent deopt of this kernel, if any.
Sourcepub fn success_total(&self) -> u64
pub fn success_total(&self) -> u64
Cumulative successful GPU executions.
Sourcepub fn fallback_total(&self) -> u64
pub fn fallback_total(&self) -> u64
Cumulative fallback events.
Sourcepub fn success_rate(&self) -> f64
pub fn success_rate(&self) -> f64
Offload success rate as a fraction in [0, 1].
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for DeoptGuard
impl !RefUnwindSafe for DeoptGuard
impl !UnwindSafe for DeoptGuard
impl Send for DeoptGuard
impl Sync for DeoptGuard
impl Unpin for DeoptGuard
impl UnsafeUnpin for DeoptGuard
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more