Skip to content

Rewrite Best_Performance.md for v1.6 and fix the README links to it - #1352

Merged
yspolyakov merged 4 commits into
devfrom
issue1345
Sep 27, 2026
Merged

yspolyakov merged 4 commits into
devfrom
issue1345

Conversation

@pascoec

@pascoec pascoec commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #1345

@pascoec pascoec added this to the Release 1.6.0 milestone Sep 24, 2026
@pascoec
pascoec requested a review from yspolyakov September 24, 2026 20:13
@pascoec pascoec self-assigned this Sep 24, 2026
@pascoec pascoec added the documentation Improvements or additions to documentation label Sep 24, 2026
@pascoec pascoec linked an issue Sep 24, 2026 that may be closed by this pull request
Comment thread docs/static_docs/Best_Performance.md Outdated
Comment thread docs/static_docs/Best_Performance.md Outdated
Comment thread docs/static_docs/Best_Performance.md Outdated
Comment thread docs/static_docs/Best_Performance.md Outdated
Comment thread docs/static_docs/Best_Performance.md Outdated
@yspolyakov

Copy link
Copy Markdown
Contributor

Please point to the scripts that were used to generate the tables.

Comment thread docs/static_docs/Best_Performance.md Outdated
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
yspolyakov merged commit 0f1d138 into dev Sep 27, 2026
20 checks passed
@pascoec
pascoec deleted the issue1345 branch September 28, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Best_Performance.md to reflect changes in v1.6

2 participants