~/bend-docscommunity

tensor_convolution.bend checks

raw source on the hub · import stelliferous@0.0.2.0/tensor_convolution.bend as Tensor_convolution

CHW / NCHW entry. Geometry and allocation checks finish before planning. Every image uses the same reordered weights; the batch is processed in order.

20 imports
import Base
import ./tensor.bend as Tensors
import ./storage_buffer.bend as Storage
import ./storage_clone.bend as Clone
import ./storage_copy.bend as Copy
import ./kernel_shape.bend as KernelShape
import ./kernel_pipeline.bend as Pipeline
import ./kernel_gemm_buffer.bend as GemmBuffer
import ./kernel_tile.bend as Tile
import ./kernel_planning.bend as KernelPlanning
import ./default_kernel_cost.bend as DefaultCost
import ./kernel_cost.bend as Cost
import ./default_machine_limits.bend as Default
import ./machine_limits.bend as Machine
import ./proofs/storage_certificate.bend as Certificate
import ./tensor_band.bend as Bands
import ./tensor_band_window.bend as BandWindow
import ./kernel_band_pipeline.bend as BandPipeline
import ./kernel_band_planning.bend as BandPlanning
import ./math_activation.bend as Activations

Types

type InputShape source · line 24 · raw

Data

type Geometry source · line 27 · raw

Data

type DenseArguments source · line 30 · raw

Data

Definitions

def input_shape source · line 33 · raw

@shape:List<&2, U32> -> Maybe<&2, InputShape>

def matched source · line 39 · raw

@matches:Bool -> @geometry:Geometry -> Maybe<&2, Geometry>

def geometry source · line 44 · raw

@input:Maybe<&2, InputShape> -> @weights:List<&2, U32> -> @bias:List<&2, U32> -> @stride:U32 -> @padding:U32 -> Maybe<&2, Geometry>

def output_shape source · line 51 · raw

@batched:Bool -> @batch:U32 -> @rows:U32 -> @height:U32 -> @width:U32 -> List<&2, U32>

def selected_depth source · line 56 · raw

@plan:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_planning.Plan -> U32

def configured_depth source · line 60 · raw

@work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @input_capacity:U32 -> @bias_capacity:U32 -> @workers:U32 -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+config:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_cost.Configuration -> U32

def depth source · line 67 · raw

@work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @input_capacity:U32 -> @bias_capacity:U32 -> @workers:U32 -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> U32

The input tensor's workers bound the split, as a thread pool bounds PyTorch's parallel_for.

def copied_output source · line 70 · raw

@pair:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>

def dense_arguments source · line 116 · raw

@geometry:Geometry -> @+bias_depth:Nat -> @+workers:U32 -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> DenseArguments

def band_context source · line 134 · raw

@geometry:Geometry -> @parallel:Bool -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_band_pipeline.Context

def band_work source · line 139 · raw

@context:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_band_pipeline.Context -> @bias_capacity:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_planning.Work

def context_window source · line 144 · raw

@context:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_band_pipeline.Context -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band_window.Geometry

def uses_band_windows source · line 176 · raw

@geometry:Geometry -> Bool

Padding-only output windows and an empty batch use the existing dense path. This is a representation choice, not a restriction on valid convolution shapes.

def reordered source · line 195 · raw

@dimensions:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_shape.Dimensions -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8>

The weights in the order the kernel reads them: once, after the checks.

def packed source · line 199 · raw

@geometry:Geometry -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8>

def machine_support source · line 208 · raw

@geometry:Geometry -> @+limits:0x9be3b13bf249759bc81e1958bcd1a4c0/machine_limits.Limits -> Bool

def dense_call_valid source · line 222 · raw

@+dimensions:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_shape.Dimensions -> @+count:U32 -> @+input_length:Nat -> @+input_depth:Nat -> @+weight_length:Nat -> @+weight_depth:Nat -> @+bias_length:Nat -> @+bias_depth:Nat -> Bool

What a dense call needs of its three buffers: lengths that fit the shape and the capacities that hold them.

def band_call_valid source · line 287 · raw

@+dimensions:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_shape.Dimensions -> @+count:U32 -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @inspection:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Inspection -> @+weight_length:Nat -> @+weight_depth:Nat -> @+bias_length:Nat -> @+bias_depth:Nat -> Bool

What a call on bands needs: bands that cover the images of the geometry, and parameters whose lengths fit the shape and their capacities.

Templates

template image source · line 74 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @depth:U32 -> @work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @index:U32 -> @+input_size:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>, 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>)

template batch source · line 80 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @count:Nat -> @+index:U32 -> @+depth:U32 -> @+work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @+input_size:U32 -> @+output_size:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>

template images_selected source · line 96 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @empty:Bool -> @single:Bool -> @+count:U32 -> @depth:U32 -> @work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @input_size:U32 -> @+output_size:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>

template images source · line 107 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+count:U32 -> @depth:U32 -> @work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @input_size:U32 -> @+output_size:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32>

template execute_dense_at_depth source · line 111 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+image_count:U32 -> @+selected_depth:U32 -> @+work:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_pipeline.Work -> @+input_size:U32 -> @+output_size:U32 -> @+output_extents:List<&2, U32> -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute_dense_arguments source · line 126 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @arguments:DenseArguments -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute_dense source · line 130 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template band_output source · line 148 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+geometry:Geometry -> @parallel:Bool -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template start_bands source · line 155 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @depth:U32 -> @parallel:Bool -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template initial_layout_selected source · line 159 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @zero:Bool -> @depth:U32 -> @parallel:Bool -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template initial_layout source · line 164 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @plan:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_band_planning.Plan -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute_many source · line 168 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute_layout source · line 180 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @band_windows:Bool -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute_selected source · line 186 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @single_worker:Bool -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute source · line 191 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template machine source · line 203 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @supported:Bool -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+shape:List<&2, U32> -> @fill:F32 -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template supported source · line 214 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @valid:Bool -> @+geometry:Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+shape:List<&2, U32> -> @fill:F32 -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template checked source · line 230 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @geometry:Maybe<&2, Geometry> -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+shape:List<&2, U32> -> @fill:F32 -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template status source · line 244 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+input_extents:List<&2, U32> -> @fill:F32 -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weight_shape:List<&2, U32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias_shape:List<&2, U32> -> @stride:U32 -> @padding:U32 -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template replanned source · line 250 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+geometry:Geometry -> @selection:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_band_planning.LayoutPlan -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template existing_layout source · line 254 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+geometry:Geometry -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+workers:U32 -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template execute_existing_layout source · line 262 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @band_windows:Bool -> @+geometry:Geometry -> @+layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_tile.Tile8> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template band_machine source · line 272 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @supported:Bool -> @+geometry:Geometry -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+shape:List<&2, U32> -> @fill:F32 -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template band_supported source · line 278 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @valid:Bool -> @+geometry:Geometry -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+shape:List<&2, U32> -> @fill:F32 -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template band_inspected source · line 297 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+geometry:Geometry -> @+layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @shape:List<&2, U32> -> @fill:F32 -> @workers:U32 -> @inspected:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Inspection) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template band_checked source · line 307 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @geometry:Maybe<&2, Geometry> -> @+layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @+shape:List<&2, U32> -> @fill:F32 -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template band_status source · line 313 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(F32) -> @+shape:List<&2, U32> -> @fill:F32 -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weight_shape:List<&2, U32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias_shape:List<&2, U32> -> @stride:U32 -> @padding:U32 -> @workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template input_layout source · line 319 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weight_shape:List<&2, U32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias_shape:List<&2, U32> -> @parameter_status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @parameter_workers:U32 -> @stride:U32 -> @padding:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template input_selected source · line 327 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @dense:Bool -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @weight_shape:List<&2, U32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<F32> -> @bias_shape:List<&2, U32> -> @+parameter_status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @+parameter_workers:U32 -> @+stride:U32 -> @+padding:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template conv2d_selected source · line 337 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @+dense:Bool -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @+stride:U32 -> @+padding:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

Parameter representations select one public path before any element work. Dense parameters retain the existing incoming-band convolution leaf path.

template conv2d_bias_layout source · line 342 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @dense:Bool -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @stride:U32 -> @padding:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>

template conv2d source · line 349 · raw

@-custom:(@_:F32 -> F32) -> @+activation:0x9be3b13bf249759bc81e1958bcd1a4c0/math_activation.Activation -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @weights:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @bias:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32> -> @stride:U32 -> @padding:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<F32>