Expand description
Parallel executor for the graph IR recorded by Halo2IRBuilder.
Lowering flattens each graph node — using its
NodeMeta — into a [GraphCoreInst] whose
operands are absolute tape offsets. The tape layout is
[advice | lookups | consts] (dedup’d fixed-column constants live in the
trailing region), so operand gathering is uniform.
Execution has two phases:
load_proof_wirestreams proof witnesses into the tape viaPopulateInputs, replaying recordedLoadWitnessinstructions.GraphExecutor::runclaims level-sorted compute instructions off a shared atomic cursor; each worker spin-waits on its parents’ done flags (Release/Acquire) — no barriers.
Structs§
- Fused
Column Builder - Streams graph-executor tape deltas into advice columns.
- Graph
Executor - Ephemeral binding of a
GraphProgramwith aGraphExecutorState, implementingPopulateInputssoload_proof_wirecan stream witnesses into the tape and drivingSelf::runfor the compute phase. - Graph
Executor State - Mutable state executing a
GraphProgram: the witness tape, the input cursor, and the workers’ done flags. Reusable across proofs —runstampsflagswith a freshphaseinstead of zeroing them, and the tape’s compute cells are simply overwritten. - Graph
Program - The immutable output of lowering a graph IR: everything needed to replay the populate trace that is a pure function of the static circuit shape.