def cell_spec

bendtorch-core@0.1.0.0 · src/tensor/matmul_parallel_proof.bend:216

import bendtorch-core@0.1.0.0/src/tensor/matmul_parallel_proof.bend as MatmulParallelProof
import Base
import bendtorch-core@0.1.0.0/src/storage/model.bend as Model
import bendtorch-core@0.1.0.0/src/tensor/matmul.bend as Matrix
import bendtorch-core@0.1.0.0/src/tensor/elementwise_parallel_proof.bend as Parallel

216# What the cell function computes is what CellSpec names.
217def cell_spec(+dl: Nat, +dr: Nat, A: Array<F32>, B: Array<F32>, +inner: Nat, +columns: Nat, +position: Nat, inside: Bool,
218  -observed: Maybe<&2, F32>, -computed: {observed == Some{Pair.fst(F32, Array<F32> & Array<F32>, cell_of(inner, columns, position, A, B, inside))} : Maybe<&2, F32>},
219  -left_valid: Model.Balanced(F32, dl, A), -right_valid: Model.Balanced(F32, dr, B)) ->
220  Parallel.Fact<CellSpec(dl, dr, A, B, inner, columns, position, inside, observed)>:
221  match inside:
222    case False{}:
223      Parallel.Fact{computed}
224    case True{}:
225      Parallel.Fact{{\{DotRun: values => logical => fold => left_kept => right_kept =>
226        CellAt{Pair.fst(F32, Array<F32> & Array<F32>, cell_of(inner, columns, position, A, B, True{})), computed, values, logical, fold}} :
227        DotRun<inner, dl, dr, A, B, inner, columns, Matrix.row_of(columns, position), Matrix.column_of(columns, position), 0n, 0.0,
228          cell_of(inner, columns, position, A, B, True{})> ->
229        CellAt<dl, dr, A, B, inner, columns, position, observed>}(
230        {\{Parallel.Fact: p => p} :
231          Parallel.Fact<DotRun<inner, dl, dr, A, B, inner, columns, Matrix.row_of(columns, position), Matrix.column_of(columns, position), 0n, 0.0,
232            cell_of(inner, columns, position, A, B, True{})>> ->
233          DotRun<inner, dl, dr, A, B, inner, columns, Matrix.row_of(columns, position), Matrix.column_of(columns, position), 0n, 0.0,
234            cell_of(inner, columns, position, A, B, True{})>}(
235          dot_run(inner, dl, dr, A, B, inner, columns, Matrix.row_of(columns, position), Matrix.column_of(columns, position), 0n, 0.0, A, B,
236            {==}, {==}, left_valid, right_valid)))}

Uses (16)

Used by (1)