def product_tree_certified

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

import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matmul
import Base
import bendtorch-core@0.1.0.0/src/tensor/parallel.bend as Parallel

674def product_tree_certified(+layout: Layout, +depth: Nat, +count: Nat, +base: Nat, state: Array<F32> & Array<F32>) ->
675  Parallel.Certified<(Array<F32> & Array<F32>), depth, product_tree(layout, depth, count, base, state)>:
676  match depth:
677    case 0n:
678      Parallel.tree_certified(~Layout, ~Array<F32>, ~Array<F32>, ~product_cell_at, layout, 0n, count, base, state)
679    case 1n+d1:
680      match d1:
681        case 0n:
682          Parallel.tree_certified(~Layout, ~Array<F32>, ~Array<F32>, ~product_cell_at, layout, 1n, count, base, state)
683        case 1n+d2:
684          match d2:
685            case 0n:
686              Parallel.tree_certified(~Layout, ~Array<F32>, ~Array<F32>, ~product_cell_at, layout, 2n, count, base, state)
687            case 1n+d3:
688              match d3:
689                case 0n:
690                  block_or_tree_certified(layout, count, base, state, one_row(layout, count, base))
691                case 1n+d4:
692                  Parallel.node_certified(~Array<F32>, ~Array<F32>, d1, l => r => product_tree(layout, d1, count, Parallel.upper(d1, base), (l, r)),
693                    product_tree(layout, d1, count, base, state), product_tree_certified(layout, d1, count, base, state),
694                    l => r => product_tree_certified(layout, d1, count, Parallel.upper(d1, base), (l, r)))

Uses (14)

Used by (1)