def block_step

stelliferous@0.0.2.0 · kernel_pipeline.bend:132

import stelliferous@0.0.2.0/kernel_pipeline.bend as KernelPipeline
import Base
import stelliferous@0.0.2.0/kernel_spatial_packing.bend as Packing
import stelliferous@0.0.2.0/kernel_packing_buffer.bend as PackingBuffer

132# Packing addresses the input window; output positions are local to the leaf.
133# Each block overwrites tiles from zero and writes directly into the leaf output.
134def block_step(work: Work,pack_start: U32,output_start: U32,+span: U32,state: BlockState) -> BlockState:
135  Work{rows,h,w,k,s,p,ow,positions,+inner} = work
136  BlockState{input,tiles,weights,bias,output} = state
137  block_packed(rows,positions,inner,output_start,span,weights,bias,output,
138    PackingBuffer.run(Packing.Call{U32.to_nat((span / 8 * inner : U32)),pack_start,h,w,k,s,p,ow,inner},input,tiles))

Uses (9)

Used by (1)