pub struct SwishForward {
pub name: &'static str,
pub id: String,
pub block_size: i32,
pub kernel_source: String,
pub entry_point_source: String,
pub source: String,
}Expand description
Forward: y = x * sigmoid(x) = x / (1 + exp(-x))
Fields§
§name: &'static strThe kernel function’s name (e.g. "flash_attention2_forward").
id: StringUnique kernel identifier: fn_name + dtype(s) + const values joined by “__”.
block_size: i32Compile-time kernel constant, from the annotated fn’s const generics.
kernel_source: StringThe original kernel function source.
entry_point_source: StringThe Rust source of the generated C-ABI entry-point wrapper function.
source: StringCombined source (kernel_source + "\n\n" + entry_point_source); used by the Kernel trait.
Implementations§
Trait Implementations§
Source§impl Kernel for SwishForward
impl Kernel for SwishForward
Source§fn kernel_source(&self) -> &str
fn kernel_source(&self) -> &str
This kernel’s body source, without the entry-point wrapper.
Source§fn entry_point_source(&self) -> &str
fn entry_point_source(&self) -> &str
Returns the Rust source of the generated C-ABI entry-point wrapper function.
Source§fn entry_point_name(&self) -> String
fn entry_point_name(&self) -> String
Returns the PTX symbol name for this kernel:
"{name}_entry_point".Source§impl RuntimeOp for SwishForward
impl RuntimeOp for SwishForward
Source§fn n_activation_inputs(&self) -> usize
fn n_activation_inputs(&self) -> usize
Number of activation tensors taken from predecessor DAG nodes.
Source§fn param_shapes(&self, _: &[&[usize]], _: &[usize]) -> Vec<Vec<usize>>
fn param_shapes(&self, _: &[&[usize]], _: &[usize]) -> Vec<Vec<usize>>
Shapes of additional parameter buffers (weights, biases) needed by this
op. Called at
LoadedModel::load() time to pre-allocate device buffers.
input_shapes / output_shape are concrete (batch dim resolved).Source§fn pack_args(
&self,
inputs: &[(RawPtr, &[usize])],
_: &[RawPtr],
output: RawPtr,
output_shape: &[usize],
_: i32,
visitor: &mut dyn ArgVisitor,
)
fn pack_args( &self, inputs: &[(RawPtr, &[usize])], _: &[RawPtr], output: RawPtr, output_shape: &[usize], _: i32, visitor: &mut dyn ArgVisitor, )
Pack all kernel arguments into
visitor in the correct order. Read moreSource§fn grid(&self, output_shape: &[usize]) -> [u32; 3]
fn grid(&self, output_shape: &[usize]) -> [u32; 3]
Number of CTAs to launch (x, y, z), given the concrete output shape.
Source§fn has_backward(&self) -> bool
fn has_backward(&self) -> bool
Returns true if this op has a backward (gradient) kernel.
Source§fn pack_backward_args(
&self,
inputs: &[(RawPtr, &[usize])],
_: &[RawPtr],
_: RawPtr,
output_shape: &[usize],
grad_output: RawPtr,
_: i32,
grad_inputs: &[RawPtr],
_: &[RawPtr],
visitor: &mut dyn ArgVisitor,
)
fn pack_backward_args( &self, inputs: &[(RawPtr, &[usize])], _: &[RawPtr], _: RawPtr, output_shape: &[usize], grad_output: RawPtr, _: i32, grad_inputs: &[RawPtr], _: &[RawPtr], visitor: &mut dyn ArgVisitor, )
Pack backward kernel arguments. Read more
Source§fn backward_block(&self) -> [u32; 3]
fn backward_block(&self) -> [u32; 3]
Threads-per-CTA for the backward kernel.
Source§fn backward_grid(&self, _: &[&[usize]], output_shape: &[usize]) -> [u32; 3]
fn backward_grid(&self, _: &[&[usize]], output_shape: &[usize]) -> [u32; 3]
Number of CTAs for the backward kernel. Read more
Source§fn param_names(&self) -> &'static [&'static str]
fn param_names(&self) -> &'static [&'static str]
Names of parameter slots returned by [
param_shapes], in the same order.
Used as the suffix in the dotted key {node_name}.{slot_name}.
Return an empty slice for ops that have no named parameters.Source§fn forward_output_row_stride(&self, output_shape: &[usize]) -> usize
fn forward_output_row_stride(&self, output_shape: &[usize]) -> usize
Returns the required row stride (in elements) for the output buffer of
this op’s forward kernel. The default is the natural row-major stride
(
output_shape[-1]). Kernels using TMA must round up to satisfy the
16-byte alignment constraint (e.g. 4 elements for f32).Source§fn param_init_data(&self, _param_idx: usize) -> Option<Vec<u8>>
fn param_init_data(&self, _param_idx: usize) -> Option<Vec<u8>>
Returns raw (little-endian) bytes to pre-populate parameter slot
param_idx
immediately after device buffer allocation. Return None to leave the
slot zero-initialised (the default for trained parameters).
Byte count must equal param_shapes()[param_idx].iter().product() * dtype_bytes.Source§fn compute_concrete_output_shape(
&self,
_input_shapes: &[&[usize]],
resolved: &[usize],
) -> Vec<usize>
fn compute_concrete_output_shape( &self, _input_shapes: &[&[usize]], resolved: &[usize], ) -> Vec<usize>
Override to compute the true concrete output shape from concrete input shapes. Read more
Source§fn n_launches(&self) -> usize
fn n_launches(&self) -> usize
Number of sequential kernel launches this op requires. Read more
Source§fn pack_args_for_launch(
&self,
launch_idx: usize,
inputs: &[(*mut c_void, &[usize])],
params: &[*mut c_void],
output: *mut c_void,
output_shape: &[usize],
output_row_stride: i32,
visitor: &mut dyn ArgVisitor,
)
fn pack_args_for_launch( &self, launch_idx: usize, inputs: &[(*mut c_void, &[usize])], params: &[*mut c_void], output: *mut c_void, output_shape: &[usize], output_row_stride: i32, visitor: &mut dyn ArgVisitor, )
Pack kernel arguments for launch
i (0-indexed). Read moreSource§fn grid_for_launch(
&self,
launch_idx: usize,
input_shapes: &[&[usize]],
output_shape: &[usize],
) -> [u32; 3]
fn grid_for_launch( &self, launch_idx: usize, input_shapes: &[&[usize]], output_shape: &[usize], ) -> [u32; 3]
Grid for launch
i. Receives concrete input shapes so that per-chunk
grids can be computed without storing them in the op. Read moreSource§fn backward_grad_output_row_stride(&self, output_shape: &[usize]) -> usize
fn backward_grad_output_row_stride(&self, output_shape: &[usize]) -> usize
Returns the required row stride (in elements) for the grad_output buffer
passed to
pack_backward_args. The default is the natural row-major
stride (output_shape[-1]). Kernels using TMA must round up to satisfy
the 16-byte alignment constraint (e.g. 4 elements for f32).Source§fn n_backward_launches(&self) -> usize
fn n_backward_launches(&self) -> usize
Number of sequential kernel launches for the backward pass. Read more
Source§fn pack_backward_args_for_launch(
&self,
launch_idx: usize,
inputs: &[(*mut c_void, &[usize])],
params: &[*mut c_void],
output: *mut c_void,
output_shape: &[usize],
grad_output: *mut c_void,
grad_output_row_stride: i32,
grad_inputs: &[*mut c_void],
grad_params: &[*mut c_void],
visitor: &mut dyn ArgVisitor,
)
fn pack_backward_args_for_launch( &self, launch_idx: usize, inputs: &[(*mut c_void, &[usize])], params: &[*mut c_void], output: *mut c_void, output_shape: &[usize], grad_output: *mut c_void, grad_output_row_stride: i32, grad_inputs: &[*mut c_void], grad_params: &[*mut c_void], visitor: &mut dyn ArgVisitor, )
Pack backward kernel arguments for launch
i (0-indexed). Read moreAuto Trait Implementations§
impl Freeze for SwishForward
impl RefUnwindSafe for SwishForward
impl Send for SwishForward
impl Sync for SwishForward
impl Unpin for SwishForward
impl UnsafeUnpin for SwishForward
impl UnwindSafe for SwishForward
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
Mutably borrows from an owned value. Read more