Split circuit evaluation in "pure execution" vs "trace generation"
- Ngôn ngữ chính
- Rust
- Star
- 772
- Fork
- 352
- Merge trung bình
- 1 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 84
Mô tả
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
Hướng dẫn đóng góp
Hướng nghiên cứu
Look at the `eval_circuit_impl()` function and the `CircuitEvaluation` struct to understand the current flow. Then examine `Circuit::evaluate()` as a potential replacement. The goal is to separate pure circuit evaluation from trace generation, so the `ExecutionTracer` builds its own wiring data. Check the linked PR discussion for context on what wiring information is currently built and discarded.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- rust
- Lĩnh vực
- backend
- Loại issue
- Tái cấu trúc
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 30/100