0xMiden / 0xMiden/miden-vm

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

Đang mở
#2,677 0 bình luận 1 reaction 0 người được giao Xem trên GitHub
processor
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

Mở 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.