Suyash Bagad
Research Team
\(\texttt{compute\_composition\_polynomial}\)
\(\textsf{trace}\)
\(\alpha\)
\(\textsf{CP}(X)\)
Component A
Component B
Preprocessing trace
Execution trace
Interaction trace
Component A
Component B
Trace domain size
Eval domain size
No of constraints
Trace domain size
Eval domain size
No of constraints
\(\texttt{compute\_composition\_polynomial}\)
| Component | Eval domain | Total columns | # constraints | Max Memory (MB) |
| Scheduler | 2^17 | 409 | 6 | 68 |
| Round 1 | 2^20 | 645 | 129 | 1074 |
| Round 2 | 2^18 | 645 | 129 | 269 |
| Xor 12 | 2^17 | 772 | 128 | 135 |
| Xor 9 | 2^15 | 52 | 8 | 3 |
| Xor 8 | 2^13 | 52 | 8 | 0.3 |
| Xor 7 | 2^11 | 52 | 8 | 0.15 |
| Xor 4 | 2^9 | 9 | 8 | 0.01 |
| Full trace | 2^20 | 2636 | 424 | 4300 |
Example: \(2^{16}\) instances of Blake2s hash
| With polynomial API | Without polynomial API |
| Easier to write | Harder but more control |
| Requires DCCT in polyAPI and batch inversion |
Can require batch inversion |
| Preparation: 3 days | Preparation: 1-2 days |
| Can use only one stream | Multi-stream for components |
| Could be slower (single stream) | Should be faster with multiple streams |
| Implementation: 2 days | Implementation: 3 days |
Component A
Component B
Preprocessing trace
Execution trace
Interaction trace
Preprocessing trace
Execution trace
Interaction trace
Component A
Component B
Component A
Component B
Composition
Polynomials
Component A
Component B
Composition
Polynomials
Component B
Component B
\(\texttt{compute\_fri\_quotient}\)
\(Q_c(x) = \left(\textcolor{violet}{v_{\gamma}^{-1}} \cdot \sum_{i=1}^{10}\textcolor{orange}{\beta^i} \textcolor{lightgreen}{f_i(x)} - \textcolor{orange}{\beta^if_i(\gamma)}\right)\)
\(+ \ \textcolor{orange}{\beta^{10}}\left(\textcolor{violet}{v_{T_\gamma}^{-1}} \cdot \sum_{i=1}^{4}\textcolor{orange}{\beta^i} \textcolor{lightgreen}{f_{i'}(x)} - \textcolor{orange}{\beta^if_{i'}(\gamma)}\right)\)
\(\implies 20\times\) speedup per polynomial
Computation \(\approx 5\%\)
Memory alloc and copies \(\approx 95\%\)
Computation and malloc \(\approx 0.34\%\)
Memory alloc and copies \(\approx 99\%\)
\(\implies 300\times\) speedup
| Stage | Same backend | prove | Modified backend | prove |
| OODS sampling | 20x | 16% | 2000x | |
| FRI Quotient | 300x | 28% | 1000x | |
By Suyash Bagad