def product_build_balanced

bendtorch-core@0.1.0.0 · src/tensor/matmul.bend:703

import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matmul
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model
import bendtorch-core@0.1.0.0/src/tensor/elementwise.bend as Elementwise
import bendtorch-core@0.1.0.0/src/tensor/parallel.bend as Parallel

703def product_build_balanced(+depth: Nat, +splits: Nat, +lo: Order, +ro: Order, +inner: Nat, +rows: Nat, +columns: Nat,
704  +count: Nat, +base: Nat, la: Array<F32>, ra: Array<F32>) ->
705  Model.Balanced(F32, depth, product_build(depth, splits, lo, ro, inner, rows, columns, count, base, la, ra)):
706  match depth splits:
707    case 1n+lower 1n+rest:
708      Parallel.fork_balanced(~Array<F32>, ~Array<F32>, lower, Elementwise.split((la, ra)),
709        l => r => product_build(lower, rest, lo, ro, inner, rows, columns, count, base, l, r),
710        l => r => product_build(lower, rest, lo, ro, inner, rows, columns, count, Parallel.upper(lower, base), l, r),
711        l => r => product_build_balanced(lower, rest, lo, ro, inner, rows, columns, count, base, l, r),
712        l => r => product_build_balanced(lower, rest, lo, ro, inner, rows, columns, count, Parallel.upper(lower, base), l, r))
713    case 0n _:
714      tree_balanced(0n, product_tree(Layout{lo, ro, inner, rows, columns}, 0n, count, base, (la, ra)),
715        product_tree_certified(Layout{lo, ro, inner, rows, columns}, 0n, count, base, (la, ra)))
716    case 1n+lower 0n:
717      tree_balanced(1n+lower, product_tree(Layout{lo, ro, inner, rows, columns}, 1n+lower, count, base, (la, ra)),
718        product_tree_certified(Layout{lo, ro, inner, rows, columns}, 1n+lower, count, base, (la, ra)))

Uses (14)

Used by (3)