Expand description
What a graph computes, answered without a chip: the evaluator every backend is held to.
Each primitive computes what the LOGOS statements its sugar desugars to compute, in the same loop order, with the same
operations: Reals in f64, e^x as E ** x (powf), max and min as the language’s (maximumNumber,
minimumNumber), Ints exactly (a sum past i64 is refused by name, where the VM would widen it), integer division
truncating and // flooring. So a lifted graph evaluates to exactly what the VM prints for its program, bit for bit.
A rewritten graph means what its ops say: an operand read Strided is the part of every
unit of the wider tensor it names, a result with a row or unit destination lands in rows or units of the tensor it
names, a view is its operand’s values from its offset on, a quantize is its operand’s own values (the meaning is
exact; a chip’s quantized arithmetic is its numerics, held to a declared bound), and a fused symbol is its parts, run
in order, of which only its result, what it keeps and the state it writes outlive it.