CKKS: Use prime selection logic from OpenFHE #2402
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The prime selection logic from #1400 for CKKS just uses the same prime selection logic as BGV, and might cause some severe scaling factor mismatch issue / rescaling noise due to the nature of RNS-CKKS instantiation.
To better mitigate the issue, CKKS should have its own prime selection logic, and OpenFHE is the standard reference.
This also helps #2364 and #2379. I believe with this PR, the high-precision level-specific scaling factor in
populate-scale-ckkscan be safely instantiated after the "reduced error" prime selection logic ingenerate-param-ckks.Relates to #1640 but that issue has lots of TODO related to high precision scaling factor so it can not be closed.
For @j2kun: Can the specific issue in #2364 be reproduced with these prime selection logic?