~/bend-docscommunity

tensor_band_concat.bend checks

raw source on the hub · import stelliferous@0.0.2.0/tensor_band_concat.bend as Tensor_band_concat

Channel concatenation writes each input range directly into its final band. Different input boundaries need no temporary dense tensor or aligned copy.

7 imports
import Base
import ./tensor.bend as Tensors
import ./tensor_band.bend as Bands
import ./storage_buffer.bend as Storage
import ./traversal_partition.bend as Partition
import ./storage_copy.bend as Copy
import ./tensor_band_schedule.bend as BandSchedule

Types

type Channel source · line 119 · raw

Data

Definitions

def geometry source · line 11 · raw

@shape:List<&2, U32> -> @axis:U32 -> Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry>

def first_plan source · line 27 · raw

@first:Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan> -> @rest:Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan> -> Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>

def compatible_plans source · line 48 · raw

@first:Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan> -> @rest:Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan> -> Bool

Reuse the existing metadata traversal to classify the common band path. Mixed representations and different plans use the dense concat caller.

def channel_offset source · line 88 · raw

@geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> @rows:U32 -> U32

def channels source · line 113 · raw

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

Templates

template tensor_planned source · line 17 · raw

@-Element:Data -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @shape:List<&2, U32> -> @fill:Element -> @status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @workers:U32 -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>)

template tensor_plan source · line 22 · raw

@-Element:Data -> @tensor:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>)

template single_plan source · line 32 · raw

@-Element:Data -> @first:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>) -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>)

template cons_plan source · line 36 · raw

@-Element:Data -> @first:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>) -> @rest:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>) -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>)

template discover source · line 41 · raw

@-Element:Data -> @parts:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element> -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>)

template single_compatible_plan source · line 53 · raw

@-Element:Data -> @tensor:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> @layout:Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan> -> Pair(Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>), Bool)

template single_compatible source · line 59 · raw

@-Element:Data -> @first:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>) -> Pair(Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>), Bool)

template cons_compatible source · line 64 · raw

@-Element:Data -> @first:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>) -> @rest:Pair(Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>), Bool) -> Pair(Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>), Bool)

template discover_compatible source · line 73 · raw

@-Element:Data -> @parts:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element> -> Pair(Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element>, Maybe<&2, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan>), Bool)

template allocate source · line 78 · raw

@-Element:Data -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+fill:Element -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template dense_rows source · line 83 · raw

@-Element:Data -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+first:U32 -> @+rows:U32 -> @channel:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element>, 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element>)

template rows source · line 92 · raw

@-Element:Data -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+first:U32 -> @+rows:U32 -> @channel:U32 -> @tensor:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element>)

template append_tree source · line 102 · raw

@-Element:Data -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+channel:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element))

template append_band source · line 122 · raw

@-Element:Data -> @context:Channel -> @first:U32 -> @rows:U32 -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> @resource:Unit -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template append_planned source · line 127 · raw

@-Element:Data -> @+parallel:Bool -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> @planned:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template append_aligned source · line 136 · raw

@-Element:Data -> @parallel:Bool -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

Every output leaf receives the same rows of the input, through the shared band recursion on the plan of the output. Trees of another shape keep the output.

template appended_rows source · line 139 · raw

@-Element:Data -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>, 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template selected_rows source · line 143 · raw

@-Element:Data -> @same:Bool -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> @workers:U32 -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> @shape:List<&2, U32> -> @fill:Element -> @status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @previous:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template aligned_or_rows source · line 149 · raw

@-Element:Data -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> @workers:U32 -> @input:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> @output:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> @shape:List<&2, U32> -> @fill:Element -> @status:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Status -> @previous:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template append_storage source · line 155 · raw

@-Element:Data -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> @workers:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template append_input source · line 162 · raw

@-Element:Data -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+channel:U32 -> @+count:U32 -> @workers:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> @output:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), U32)

template append_part source · line 166 · raw

@-Element:Data -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @input:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element> -> @state:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), U32) -> Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), U32)

template output source · line 171 · raw

@-Element:Data -> @state:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), U32) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template append_parts source · line 175 · raw

@-Element:Data -> @parts:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element> -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+workers:U32 -> @state:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), U32) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)

template join source · line 180 · raw

@-Element:Data -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @parts:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Parts<Element> -> @shape:List<&2, U32> -> @+fill:Element -> @+workers:U32 -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor.Tensor<Element>