def slot_step

bendtorch-core@0.1.0.0 · src/autograd/tensor_chain_PROOF.bend:374

import bendtorch-core@0.1.0.0/src/autograd/tensor_chain_PROOF.bend as TensorChainPROOF
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core
import bendtorch-core@0.1.0.0/src/autograd/gradient.bend as Gradient
import bendtorch-core@0.1.0.0/src/autograd/tensor_backward.bend as Backward
import bendtorch-core@0.1.0.0/src/autograd/tensor_chain_LAWS.bend as Laws

374def slot_step(+node: Backward.Node, +shape: Shape.Shape, -value: Core.Dynamic, saved: Backward.Saved, -slot: Gradient.Slot,
375  -rest: List<&1, Backward.Entry>, x: Gradient.Slot, more: List<&1, Gradient.Slot>, +below: Nat, -slots: List<&1, Gradient.Slot>,
376  -log: Laws.Log(), pushed: Cell<x, more, slots, below, log>,
377  ih: @state: Laws.Slots() -> @-slots2: List<&1, Gradient.Slot> -> @+count2: Nat -> @-log2: Laws.Log() ->
378    @pushed2: Pushed(state, slots2, count2, log2) -> Out(rest, state, count2, slots2, log2)) ->
379  Run<Backward.Entry{node, shape, value, saved, slot} <> rest, x <> more, 1n+below, slots, log>:
380  match x:
381    case Gradient.Unset{}:
382      Cell{w, older, left, at, took, tail} = pushed
383      unset_step(node, shape, value, saved, slot, rest, more, below, slots, log, w, older, left, at, took,
384        ih(Done{more}, older, below, left, tail))
385    case Gradient.Held{g}:
386      Cell{w, older, left, at, took, tail} = pushed
387      fired_run(node, shape, value, saved, slot, rest, g, more, below, slots, log, w, older, left, at, took,
388        held_step(node, shape, value, slot, rest, more, below, older, left, tail, Backward.vjp(node, saved, g), ih))

Uses (19)

Used by (1)