~/bend-docscommunity

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

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)