Skip to main content

Window

Struct Window 

Source
pub struct Window<'a, D: GraphDriver> { /* private fields */ }
Expand description

A capture window on one stream: arming the pools before it opens, opening it, and instantiating what it recorded.

The three steps are ordered and the stream refuses them out of order (see StreamCapture); this type is where each one’s shared half lives.

Implementations§

Source§

impl<'a, D: GraphDriver> Window<'a, D>

Source

pub fn on(stream: &'a mut D::Stream) -> Self

The capture window on stream.

Source

pub fn prepare(&mut self, stream_id: StreamId) -> Result<(), ServerError>

Arm the pools for a window about to open, before the warmup run.

Every allocation from here until the window closes is routed into the persistent pool, and which slices are already in use is snapshotted. The pool is warm by the time the window opens, so the run reuses those slices with no device allocation — which mid-capture is illegal. Instantiating pins everything the window added on the graph.

Both pools are armed: the device pool for tensor and kernel-info buffers, and the pinned host pool that stages each kernel’s info bytes to the device, where a fresh allocation mid-capture faults the same way.

§Errors

The stream’s refusal, when it is not in a state a window can open from.

Source

pub fn begin(&mut self) -> Result<(), ServerError>

Open the window: from here the driver records every launch issued on this stream until the window closes.

§Errors

The driver’s refusal to begin recording, with the stream left as it was found — retention disarmed, allocation mode restored, capture state back to none — so the whole prepare-then-open sequence can be retried.

Source

pub fn instantiate( &mut self, stream_id: StreamId, id: GraphId, ) -> Result<Graph<D>, Refused>

Close the window and instantiate what it recorded into a graph registered under id.

The window leaves capture mode first, so none of the paths below can wedge the stream in it — they re-enable the deferred fenced flushes and restore the allocation mode on the way out. A window the caller does not own is closed and torn down all the same, since nobody else is coming back to close it; only its owner gets a graph out of it.

§Errors

Refused, which every failure here becomes — the driver’s refusal to close or instantiate, a recording an unreadable input left incomplete, an allocation inside the window, or no window at all. It carries the memory the caller now has to claim, empty when there was nothing to close.

Auto Trait Implementations§

§

impl<'a, D> !UnwindSafe for Window<'a, D>

§

impl<'a, D> Freeze for Window<'a, D>
where &'a mut <D as Driver>::Stream: Freeze, PhantomData<D>: Freeze,

§

impl<'a, D> RefUnwindSafe for Window<'a, D>
where &'a mut <D as Driver>::Stream: RefUnwindSafe, PhantomData<D>: RefUnwindSafe,

§

impl<'a, D> Send for Window<'a, D>
where &'a mut <D as Driver>::Stream: Send, PhantomData<D>: Send,

§

impl<'a, D> Sync for Window<'a, D>
where &'a mut <D as Driver>::Stream: Sync, PhantomData<D>: Sync,

§

impl<'a, D> Unpin for Window<'a, D>
where &'a mut <D as Driver>::Stream: Unpin, PhantomData<D>: Unpin,

§

impl<'a, D> UnsafeUnpin for Window<'a, D>
where &'a mut <D as Driver>::Stream: UnsafeUnpin, PhantomData<D>: UnsafeUnpin,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts 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>

Converts 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)

Converts &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)

Converts &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
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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