Struct NodePlace¶
Defined in File schedule_dag_record.hpp
Struct Documentation¶
-
struct NodePlace¶
Where a forest node sits in the document’s naming: the occurrence’s
termandnodeand the id it spells.a node of a term’s pinned tree: (term key, left-first post-order ordinal over leaves and products), id “<key>#<ordinal>”;
the node binarize adds to apply a term’s scalar: (term key, number of tree positions + 1 – it is the term’s top, after every tree node and the scalar), id “<key>#scale”; its right operand, the Constant leaf holding the scalar, is (term key, number of tree positions), id “<key>#scalar” (spec 6.1 names no id for it; it is a DAG value too);
a unary node (an Adjoint, a conjugated factor, or a Power, a TensorPower factor) takes one tree ordinal as a leaf would; its operand is id “<key>#<ordinal>/0” and its Constant sentinel (Adjoint’s Constant{1}, Power’s exponent) “<key>#<ordinal>/1”, both at the same (term, node); when the operand is a subtree (an inlined equation), its other nodes are “<operand id>.<j>” in left-first post-order, a unary node among them taking one j with its own “/0” and “/1” below, all at the same (term, node);
the k-th partial sum of a root’s left-fold Sum: (root label, k), id “<label>+<k>”.
A value’s home block is the block holding its BuildStep; a value with no BuildStep anywhere (escape-only) is homed at the innermost block whose outputs list it; a leaf is homed at the root block (0). An edge is sliced when the consumer’s home block is nested deeper than the producer’s (it reads a slice of a value homed outside its own block). A value’s
persistentis the engine’s own flag,TableCell::persistentof the value’s outermost cell in the cell tablebuild_cell_tablederives from the schedule: the complete form the rest of the DAG consumes, which is the Assemble cell at the parent of the loop block that produces it per batch, else its Build or Leaf cell. A leaf no cell reads is never stored, so false.