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
Channel@geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @channel:U32 -> Channel
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>