ethereum / ethereum/sonobe

automate profiling & reduce memory usage

Open
#140 0 comments 1 reaction 0 assignees View on GitHub
optimization
Dominant language
Rust
Stars
285
Forks
97
PR merge metrics
No merged PRs in 30d

Description

I've been trying to use Nova to fold Circom & arkworks circuits in this repo: https://github.com/arnaucube/hash-chain-sonobe
and specially when folding arkworks circuits, the memory usage keeps growing while the `prove_step` is being called over and over.

I've started to update Sonobe removing a bunch of `.clone()`s and removed the usage of `Vec<_>` along the `nova.prove_step` method in the branch https://github.com/privacy-scaling-explorations/sonobe/tree/reduce-memory-usage, but more work needs to be done on it.

To test it, there is a branch in the hash-chain-sonobe repo that uses the `reduce-memory-usage` branch of sonobe: https://github.com/arnaucube/hash-chain-sonobe/tree/reduce-memory-usage , since the interfaces have changed in sonobe's branch.

The task of this issue would be:
1. Automating the usage of profiling tools of the memory usage, so that we can be aware of the concrete improvements (for this time but also for the future)
2. Reduce memory usage, specially focusing on the `.prove_step()` method

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the reduce-memory-usage branches in Sonobe and hash-chain-sonobe, then trace repeated calls to Nova's `prove_step()` while folding arkworks circuits. Establish an automated way to measure memory usage and use it to verify concrete reductions, especially during `prove_step()`.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance, tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.