tensor_band_schedule.bend checks
raw source on the hub · import stelliferous@0.0.2.0/tensor_band_schedule.bend as Tensor_band_schedule
Conservative memory-work estimates for elementwise and layout operations. Small operations retain their owners and run sequentially. Multi-image trees remain sequential here; window operations have explicit per-image dispatch.
6 imports
import Base import ./tensor_band.bend as Bands import ./storage_buffer.bend as Storage import ./tensor_operations.bend as Operations import ./kernel_cost.bend as Cost import ./default_kernel_cost.bend as DefaultCost
Types
type Size source · line 11 · raw
Data
Size@leaves:U32 -> @minimum_rows:U32 -> @maximum_rows:U32 -> Size
Definitions
def merge source · line 14 · raw
@left:Size -> @right:Size -> Size
def size source · line 19 · raw
@layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> Size
def sized source · line 26 · raw
@geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+workers:U32 -> @element_ns:F32 -> @config:0x9be3b13bf249759bc81e1958bcd1a4c0/kernel_cost.Configuration -> @size:Size -> Bool
The whole operation, not each leaf, must reach the grain: small leaves only lengthen the runtime's rounds, which the region estimate already counts.
def parallel source · line 36 · raw
@geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @bytes_per_element:F32 -> @operations:F32 -> @layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> Bool
def allocation_elements source · line 42 · raw
@layout:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> Nat
For equal-shaped operands the logical read/write volume of repartition is identical. The target owners' rounded capacities decide the remaining cost.
def alignment source · line 47 · raw
@+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @+left:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> @+right:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan
Templates
template mapped_context source · line 50 · raw
@-Element:Data -> @-Context:Data -> @-mapper:(@+count:Nat -> @+position:U32 -> @+context:Context -> @_:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element>) -> @context:Context -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @operations:F32 -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template map_context source · line 54 · raw
@-Element:Data -> @-Context:Data -> @-mapper:(@+count:Nat -> @+position:U32 -> @+context:Context -> @_:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element>) -> @context:Context -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @operations:F32 -> @bands:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template scalar_planned source · line 57 · raw
@-Element:Data -> @-operation:(@_:Element -> @_:Element -> Element) -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @operations:F32 -> @value:Element -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template scalar source · line 61 · raw
@-Element:Data -> @-operation:(@_:Element -> @_:Element -> Element) -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @operations:F32 -> @value:Element -> @bands:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template indexed_planned source · line 64 · raw
@-Element:Data -> @-operation:(@_:U32 -> @_:Element -> Element) -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @operations:F32 -> @fill:Element -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template indexed source · line 68 · raw
@-Element:Data -> @-operation:(@_:U32 -> @_:Element -> Element) -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @operations:F32 -> @fill:Element -> @bands:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template transformed source · line 71 · raw
@-Element:Data -> @-Context:Data -> @-leaf:(@_:Context -> @_:U32 -> @_:U32 -> @_:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)) -> @context:Context -> @+geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @bytes_per_element:F32 -> @owners:Pair(0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element), 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Plan) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)
template transform source · line 76 · raw
@-Element:Data -> @-Context:Data -> @-leaf:(@_:Context -> @_:U32 -> @_:U32 -> @_:0x9be3b13bf249759bc81e1958bcd1a4c0/storage_buffer.Buffer<Element> -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)) -> @context:Context -> @geometry:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Geometry -> @workers:U32 -> @bytes_per_element:F32 -> @bands:0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element) -> 0x9be3b13bf249759bc81e1958bcd1a4c0/tensor_band.Bands(Element)