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

Series of cleanup loops for partial loop unrolling #10

Closed
pjattke opened this issue Apr 28, 2020 · 1 comment
Closed

Series of cleanup loops for partial loop unrolling #10

pjattke opened this issue Apr 28, 2020 · 1 comment
Labels
enhancement New feature or request

Comments

@pjattke
Copy link
Contributor

pjattke commented Apr 28, 2020

Partial loop unrolling considers the number of ciphertext slots. For example, if there are 256 slots then 256 iterations are unrolled to enable simultaneous execution using SIMD capabilities of the underlying FHE scheme. The remaining loops are executed using a cleanup loop For example, if the initial number of iteration is 500 then the remaining 244 iterations would be executed using the cleanup loop.

Currently, the cleanup loop only executes a single operation at once. This could be improved by generating a binary series of cleanup loops, for example, the unrolled loop uses 256 slots, followed by a 128-unrolled cleanup loop, then a 64-unrolled cleanup loop, then a 32-unrolled cleanup loop, etc. See TODO note in CompileTimeExpressionSimplifier.

A question involved in the implementation is to decide at which point to stop (minimum unroll factor of cleanup loop). Maybe this must be determined using an empirical approach.

@AlexanderViand-Intel
Copy link
Collaborator

Closing this old issue, as the final HECO batching optimization no longer uses the underlying approach that caused the issue :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants