Skip to content

Improve waterline bootstrapping - #3248

Closed
copybara-service[bot] wants to merge 1 commit into
mainfrom
test_953661136
Closed

Improve waterline bootstrapping#3248
copybara-service[bot] wants to merge 1 commit into
mainfrom
test_953661136

Conversation

@copybara-service

Copy link
Copy Markdown
Contributor

Improve waterline bootstrapping

This change replaces the single greedy waterline-bootstrapping pattern with an analysis pass that marks all the places bootstraps should be inserted before a secondary pass that actually mutates the IR.

The original pattern was failing to compile a number of larger programs involving loops: if the op-result of a loop that exhausts all levels was later used as the input to a ct-ct mul, the pattern would not fire and it would try to modreduce after (or before) a level 0 ciphetext. The new analysis pass properly inserts a bootstrap in situations like this.

After this change, the hotword convolutional model successfully compiles in ~70 seconds on my dev machine.

update: this change also required a small change to the scale analysis code, so that it initializes plaintexts to the default scale in the forward pass for multiplications (which should always happen at the default scale), and updated backward exit states to respect function return annotations when present. This hardening step was needed because the change to how bootstraps are inserted necessitated adding additional adjust_scale ops (e.g., a bootstrap just before a modreduce) which don't have forward propagation in scale analysis.

This change replaces the single greedy waterline-bootstrapping pattern with an analysis pass that marks all the places bootstraps should be inserted before a secondary pass that actually mutates the IR.

The original pattern was failing to compile a number of larger programs involving loops: if the op-result of a loop that exhausts all levels was later used as the input to a ct-ct mul, the pattern would not fire and it would try to modreduce after (or before) a level 0 ciphetext. The new analysis pass properly inserts a bootstrap in situations like this.

After this change, the hotword convolutional model successfully compiles in ~70 seconds on my dev machine.

update: this change also required a small change to the scale analysis code, so that it initializes plaintexts to the default scale in the forward pass for multiplications (which should always happen at the default scale), and updated backward exit states to respect function return annotations when present. This hardening step was needed because the change to how bootstraps are inserted necessitated adding additional adjust_scale ops (e.g., a bootstrap just before a modreduce) which don't have forward propagation in scale analysis.
PiperOrigin-RevId: 953661136
@google-cla

google-cla Bot commented Jul 25, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@copybara-service copybara-service Bot closed this Aug 4, 2026
@copybara-service
copybara-service Bot deleted the test_953661136 branch August 4, 2026 17:39
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.

0 participants