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

chore: Bootstrap cache download ignores PARALLELISM #11030

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

spalladino
Copy link
Collaborator

We had introduced the PARALLELISM env var for bootstrap in #10909 so we could build on non-mainframe machines. However, setting a low parallelism means that requests to the cache when building noir circuits happen serially, so latency now becomes a problem.

This PR is an attempt to set up a pipeline of parallel operations, where we first run all cache downloads with very high parallelism, output what needs to be built, and run that with a lower parallelism to avoid killing the host.

We had introduced the PARALLELISM env var for bootstrap in #10909 so we
could build on non-mainframe machines. However, setting a low
parallelism means that requests to the cache when building noir circuits
happen serially, so latency now becomes a problem.

This PR is an attempt to set up a pipeline of parallel operations, where
we first run all cache downloads with very high parallelism, output what
needs to be built, and run that with a lower parallelism to avoid
killing the host.
function build {
set +e
set -u

[ -f "package.json" ] && denoise "yarn && node ./scripts/generate_variants.js"
local parallel_cmd="parallel -t --line-buffer --halt now,fail=1"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to remove --tag since it polluted stdout. With --tag set, the input to the second command (compile_circuit) included the tag. However, by removing the tag we now don't get any feedback on what circuit are we running.

Any idea on how to make --tag only apply to stderr? Or should I arrange this in a different way? An easy solution is to manually include the circuit name in every echo_stderr we do here, since there are not too many. But I'd like to know what's the proper way of handling this.

spalladino added a commit that referenced this pull request Jan 3, 2025
This PR removes the PARALLELISM for building each contract and circuit
that had been introduced in #10909. Instead, it adds a `sem` around the
resource-hungry sections of code, using the PARALLELISM default. This
allows for more parallelism of the entire script, while slowing down
only on the parts where it's really needed.

Alternative to #11030.
spalladino added a commit that referenced this pull request Jan 6, 2025
This PR removes the PARALLELISM for building each contract and circuit
that had been introduced in #10909. Instead, it adds a `sem` around the
resource-hungry sections of code, using the PARALLELISM default. This
allows for more parallelism of the entire script, while slowing down
only on the parts where it's really needed.

Alternative to #11030.
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 this pull request may close these issues.

1 participant