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.
Speeds up CKKS Multiply by ~1.2x - 2.1x. Several optimizations improve the default implementation:
add_poly_coeffmod
step when not neededI imagine a similar approach could be used to optimize the BEHZ ciphertext product in BFV multiply.
If this approach turns out to improve performance on more evaluator functions, perhaps a better implementation would be to add another iterator layer beyond the CoeffIterator, e.g. "TileIterator", which performs the tiling iteration more cleanly.
On ICX compiled with gcc-10, running
CKKS / EvaluateMulCt
benchmark for 1000 iterations yields:n=4096
n=8192
n=16384
n=32768