For a 64 core machine at a cycle count of ~16M, Jolt spends ~3.5% of its time in a segment called memory_trace_processinghere. 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
a_ram
v_read
v_write_rd
v_write_ram
t_read
t_write_ram
Memory sized
v_final
t_final
It may be helpful to review the tracing strategy for performance testing.
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_CPU
x speedup.The goal is to fill out the following. Trace Length sized
a_ram
v_read
v_write_rd
v_write_ram
t_read
t_write_ram
Memory sized
v_final
t_final
It may be helpful to review the tracing strategy for performance testing.