Repository navigation
Rewrite Best_Performance.md for v1.6 and fix the README links to it - #1352
Merged
Merged
Conversation
yspolyakov
reviewed
Sep 25, 2026
yspolyakov
reviewed
Sep 25, 2026
yspolyakov
reviewed
Sep 25, 2026
yspolyakov
reviewed
Sep 25, 2026
yspolyakov
reviewed
Sep 25, 2026
Contributor
|
Please point to the scripts that were used to generate the tables. |
yspolyakov
reviewed
Sep 25, 2026
Name the two measurement machines once, after the first results table, so every table inherits them: the Xeon 8360Y at a fixed 2.4 GHz with clang 18 and the i7-9700 at a fixed 3.0 GHz with clang 15, both with turbo off, and what turbo changes on the i7 at one and at eight threads. Recommend the composite scaling techniques over NATIVE_SIZE=128 for CKKS scaling factors above 60 bits. Add i7 columns, at the fixed clock and with turbo, to the binfhe gate table, and the GCC 11 gap on that machine to the compiler paragraph. Add SlotsToCoeffs-first bootstrapping (BTSlotsEncoding) with its latency against ModRaise-first at ring dimension 2^16, full packing, SPARSE_ENCAPSULATED, on both machines and with turbo, and the functional bootstrapping table for 1-, 2-, 4- and 8-bit lookup tables under FIXEDMANUAL and FLEXIBLEAUTO on both machines.
Keep only GINX and LMKCDEY in the binfhe gate table, say what each method is, and recommend GINX for multithreaded gates. Replace the two bootstrapping tables with one, taken from the retuned configurations of the ckks-bootstrapping benchmark (#1355): both variants for full and sparse packing at ring dimension 2^16, ring dimension 2^17 at 5 and 15 levels, and Set II of the security guidelines for UNIFORM_TERNARY secrets, with an output-precision column and the levels left after bootstrapping in each row. Drop the SPARSE_TERNARY rows. Link each table to the benchmark it comes from: binfhe-paramsets, ckks-bootstrapping and ckks-functional-bootstrapping. Turn the trade-off descriptions into recommendations where the measurements support one: SlotsToCoeffs-first for fully packed ciphertexts, SPARSE_ENCAPSULATED secrets, level budgets {4, 3} and {3, 3}, the scaling modulus chosen for precision and the rest for speed, the functional bootstrapping scaling technique by table size, one functional bootstrapping stream per socket for throughput, minimal depth and key-switching digits, fast rotations, about 8 threads for operations that saturate there, and the default radix, allocator and NUMA settings. Note the modulus-size trade-off under HEXL.
yspolyakov
approved these changes
Sep 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #1345