[Plonky3 Codegen] Expression de-duplication in generated constraints
- Vorherrschende Sprache
- Rust
- Sterne
- 96
- Forks
- 39
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
When compiling the MidenVM constraints currently done towards the Plonky3 backend, the generated constraints represent ~70 individual constraints.
However, the RPO constraints are written in a way that makes it hard to load (one constraint being represented with 1 line of 80k+ caracters).
We should maybe better optimize some expressions. For instance, we could improve the Common SubExpression Elimination: currently, it deduplicates nodes in the algebraic graph, but the codegen duplicates the generated Rust code back.
Using Rust `let` statements when a node is duplicated (maybe with some stricter conditions such as "this node should be referenced more than 10 times in the graph to have a dedicated let statement") would certainly improve readability.
The main issue I think would be that the variable names would probably not be made easily readable.
Beitragsleitfaden
Rechercherichtung
Untersuchen Sie die Codegenerierung von Plonky3 in der Constraints-Erzeugung von MidenVM, mit Fokus auf den algebraischen Graphen und Common SubExpression Elimination (CSE). Das Ziel ist es, Ausdrücke im generierten Rust-Code zu deduplizieren, indem `let`-Anweisungen für häufig referenzierte Knoten eingeführt werden. Beginnen Sie mit der Untersuchung des Codegen-Moduls, um zu verstehen, wie Constraints derzeit ausgegeben werden und wo CSE angewendet wird. Prüfen Sie Bedingungen, um zu entscheiden, wann eine `let`-Anweisung erstellt werden soll (z. B. Knoten, der mehr als 10 Mal referenziert wird). Das Ergebnis sollte die Lesbarkeit verbessern, indem Duplizierung im generierten Rust-Code reduziert wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust
- Bereich
- compilers
- Issue-Typ
- Refactoring
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100