0xMiden / 0xMiden/miden-vm

Split circuit evaluation in "pure execution" vs "trace generation"

Aperta
#2,677 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
processor
Lingua principale
Rust
Stelle
772
Fork
352
Merge medio
1g 12h
PR unite (30g)
93

Descrizione

This is a follow-up to #2676.

The current circuit evaluation code (in `eval_circuit_impl()`) builds a `CircuitEvaluation` struct, which is then passed to the `Tracer`. The `ExecutionTracer` takes this `CircuitEvaluation` to build the `AceReplay`.

The problem with this architecture is that `CircuitEvaluation` builds wire information that is only relevant to trace generation (specifically, only used in its `fill_trace()` method). A better way would be to use a method that *only* evaluates the circuit, and let the `ExecutionTracer` build the wiring information needed for trace generation. I believe `Circuit::evaluate()` is what we want to use instead, but I'm not completely sure. In this new proposed approach, the `FastProcessor` running in "execution only" mode then wouldn't need to build wiring information that will be thrown away.

Related: https://github.com/0xMiden/miden-vm/pull/2676#discussion_r2795274380

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.