Skip to content

Commit

Permalink
IVC: bifolding - start motivation
Browse files Browse the repository at this point in the history
  • Loading branch information
dannywillems committed Jul 12, 2024
1 parent e958f1a commit e625f43
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions ivc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,23 @@
//! constraints are in [crate::ivc::constraints::constrain_ivc]. The fold
//! iteration column is set at each row by each process_* function in the
//! interpreter.
//!
//! ## Bifolding (work in progress)
//!
//! The Nova IVC scheme only allows to perform sequential computation.
//! However, in some applications, like for o1VM, we need to perform parallel
//! computation. To do so, we need to introduce a new concept called "bifolding".
//!
//! The main idea behind bifolding is to allow in the augmented circuit to
//! perform the acccumulation of two individual application circuits only (i.e.
//! no IVC circuit accumulation), and when we finished accumulating the
//! application circuits, we only want to accumulate the IVC parts.
//!
//! This can also help to parallelize the folding of application circuits.
//! For instance, if we have 4 application instances, `u_1^{APP}`, `u_2^{APP}`,
//! `u_3^{APP}` and `u_4^{APP}`, we want to be able to fold `u_1^{APP}` with
//! `u_2^{APP}` while we are doing in parallel the folding of `u_3^{APP}`
//! with`u_4^{APP}`, and then fold the result of the two accumulations.

pub mod expr_eval;
pub mod ivc;
Expand Down

0 comments on commit e625f43

Please sign in to comment.