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

better NIVC coprocessor circuits #686

Closed
porcuquine opened this issue Sep 18, 2023 · 0 comments · Fixed by #700
Closed

better NIVC coprocessor circuits #686

porcuquine opened this issue Sep 18, 2023 · 0 comments · Fixed by #700

Comments

@porcuquine
Copy link
Contributor

#677 modified coprocessor reduction semantics to allow for a clean separation of coprocessor and reduction circuits.

Previously, coprocessors returned values into the ApplyContinuation branch of reduction, but implementing this in independent coprocessor circuits would require inlining all of that reduction logic into every coprocessor circuit. Instead, for the first pass, we change reduction logic so coprocessor return unevaluated arguments.

The coprocessor wrapper quotes the return values and passes them to the next reduction step along with a new tail continuation containing the intended new env and cont. This allows the next iteration to pick up the computation at the initial border of a reduction, rather than partway through it.

However, this is not optimal. We should consider alternate approaches as optimizations later (but not now — the current approach is part of what allows us to quickly gain confidence in a relatively simple implementation).

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

Successfully merging a pull request may close this issue.

1 participant