0xMiden / 0xMiden/air-script

[Plonky3 Codegen] Expression de-duplication in generated constraints

Offen
#534 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.