a16z / jolt

The simplest and most extensible zkVM. Fast and fully open source from a16z crypto and friends. ⚡
https://jolt.a16zcrypto.com
MIT License
619 stars 123 forks source link

Parallelize RAM Timestamp Count Initialization #292

Closed sragss closed 3 months ago

sragss commented 4 months ago

For a 64 core machine at a cycle count of ~16M, Jolt spends ~3.5% of its time in a segment called memory_trace_processing here. This segment allocates and computes the offline memory checking (a,v,t) polynomials used for the combined registers and RAM. Some additional details can be found in the wiki.

Currently this ~300 line segment takes ~3.5% of end-to-end time because it is computed completely serially. No use of additional CPU cores. We should parallelize this to get up to a NUM_CPUx speedup.

The goal is to fill out the following. Trace Length sized

Memory sized

It may be helpful to review the tracing strategy for performance testing.

PatStiles commented 4 months ago

Interested!

moodlezoup commented 3 months ago

done in #338