Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce the cost of a bus interaction #2337

Open
georgwiese opened this issue Jan 14, 2025 · 0 comments
Open

Reduce the cost of a bus interaction #2337

georgwiese opened this issue Jan 14, 2025 · 0 comments

Comments

@georgwiese
Copy link
Collaborator

We currently commit to two extension field elements per interaction (for GL: 2 cols / ext; for BB/M31: 4 cols / ext).

We can reduce them in two ways:

  1. One is the folded tuple. The reasons are here. We could remove it, but we would either have to disallow high-degree expressions and next references, or have a way to only materialize the folded tuple if necessary (for which we would need to inspect the expression, which we can't currently in PIL).
  2. The accumulator: Here we could batch, and have one accumulator for several bus interactions (as they are all summed up globally anyway). Each additional interactions increase the degree of the constraints, but with a degree bound of 3, we could batch two interactions, so this would cut the cost in half. For this, we need a global view of all bus interactions though (this goes in the direction of the "capture constraints" feature Chris proposed).

So overall, it could be reduced by a factor of 4, but it is not simple to implement in PIL without additional language features.

But what we could do today:

  1. Disallow expressions of degree > 1 and next references, as mentioned above, and remove the folded tuple commitment.
  2. Add a multi_send function that generates one accumulator for two sends (for receives, we should only have one per machine to begin with). Use this in the ASM linker.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant