pub struct KernelLauncher {
pub settings: KernelSettings,
pub scope: Scope,
/* private fields */
}Expand description
Prepare a kernel for launch.
Fields§
§settings: KernelSettings§scope: ScopeImplementations§
Source§impl KernelLauncher
impl KernelLauncher
pub fn with_scope<T>(&mut self, fun: impl FnMut(&Scope) -> T) -> T
Sourcepub fn register_scalar<C: ScalarArgType>(&mut self, scalar: C)
pub fn register_scalar<C: ScalarArgType>(&mut self, scalar: C)
Register a scalar to be launched.
Sourcepub fn register_scalar_raw(&mut self, bytes: &[u8], dtype: ElemType)
pub fn register_scalar_raw(&mut self, bytes: &[u8], dtype: ElemType)
Register a scalar to be launched from raw data.
Sourcepub fn launch<K: CubeKernel>(
self,
cube_count: CubeCount,
kernel: K,
client: &Client,
)
pub fn launch<K: CubeKernel>( self, cube_count: CubeCount, kernel: K, client: &Client, )
Launch the kernel.
Sourcepub fn discard(self)
pub fn discard(self)
Drop a launcher that will never launch, releasing what it registered.
With std a launcher’s scalars and metadata accumulate in a
thread-local InfoBuilder that only building the bindings drains, so
a launcher built to register arguments and then dropped — what the
create_dummy_kernel launch variant does — would leave that state
behind for the next real launch on the same thread to pick up as extra
arguments. Discarding drains it instead.
Source§impl KernelLauncher
impl KernelLauncher
Sourcepub fn declare_io(&mut self, io: BufferIOAttr)
pub fn declare_io(&mut self, io: BufferIOAttr)
Declare what the kernel does with the buffers registered from here on, until the next declaration.
The generated launch functions call this before each argument with
what the signature proves — &Tensor cannot be written, &mut Tensor
may be read — so a launch that fails before running, a kernel that
does not compile above all, taints only the buffers the kernel could
have written. The compiled kernel’s own answer still wins once it
exists; this one is the answer that survives compilation failing. A
launcher that never declares leaves every resource
ReadWrite, the loud fallback.
Sourcepub fn register_tensor(&mut self, tensor: TensorArg, elem_size: usize)
pub fn register_tensor(&mut self, tensor: TensorArg, elem_size: usize)
Push a new input tensor to the state.
Sourcepub fn register_buffer(&mut self, array: BufferArg, elem_size: usize)
pub fn register_buffer(&mut self, array: BufferArg, elem_size: usize)
Push a new input array to the state.
Sourcepub fn register_tensor_map<K: TensorMapKind>(
&mut self,
map: TensorMapArg<K>,
elem_size: usize,
)
pub fn register_tensor_map<K: TensorMapKind>( &mut self, map: TensorMapArg<K>, elem_size: usize, )
Push a new tensor to the state.
Source§impl KernelLauncher
impl KernelLauncher
pub fn new(settings: KernelSettings) -> Self
Auto Trait Implementations§
impl !Freeze for KernelLauncher
impl !RefUnwindSafe for KernelLauncher
impl !Send for KernelLauncher
impl !Sync for KernelLauncher
impl !UnwindSafe for KernelLauncher
impl Unpin for KernelLauncher
impl UnsafeUnpin for KernelLauncher
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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.impl<T> ErasedDestructor for Twhere
T: 'static,
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