- Logical CPUs
- 64
- Architecture
- x86_64
- System RAM
- 503 GiB
FHElium Benchmark v1
FHElium 0.10.0 ·
System under test
Execution hardware and host
- Memory
- 47.4 GiB
- Compute
- 8.6
- SMs
- 84
- Memory bus
- 384-bit
- Memory
- 47.4 GiB
- Compute
- 8.6
- SMs
- 84
- Memory bus
- 384-bit
- FHElium
- 0.10.0 · 0e0552608ec1 · local changes
- Torch
- 2.13.0+cu130
- Torch CUDA build
- 13.0
- NCCL
- [2,29,7]
- Python
- 3.13.14
- Operating system
- Linux-6.8.0-136-generic-x86_64-with-glibc2.35
Benchmark 1 · Single operations
Depth-aware CKKS single operations
CPU executionckks-depth-aware-single-operations · coreCKKS parameters
Ring geometry
N = 2^1416,384 coefficients · 8,192 complex slots · torch.int64 residues
Scale and state
40-bit default scaleModulus budget
Q 8 / 340 bits · P 1400 complete Q·P bits · 430 security-budget bits · 128-bit security target
Execution policy
Radix-2 indexed referencesecurity check enforced
Parameter-selection notes
RationaleThe maintained slots8192-scale40-levels7-int64 preset fixes logN=14, 8,192 complex slots, seven public levels, one key-switch P prime, and an enforced 128-bit security-table budget. The indexed radix-2 backend is the one fixed implementation shared by CPU and CUDA.
Exact CKKS parameters and states
{
"ckks_plan": {
"buffer_bit_length": 62,
"ciphertext_modulus_basis": "Q",
"complete_qp_product_bits": 400,
"complex_slot_count": 8192,
"default_scale": 1099511627776,
"evaluation_key_modulus_basis": "QP",
"final_public_level": 6,
"level_states": [
{
"active_q_count": 8,
"active_q_prime_ids": [
0,
1,
2,
3,
4,
5,
6,
7
],
"active_q_product_bits": 340,
"active_scale_prime_count": 7,
"available_public_transitions": 6,
"entry_chain_depth": 0,
"entry_level": 0
},
{
"active_q_count": 7,
"active_q_prime_ids": [
1,
2,
3,
4,
5,
6,
7
],
"active_q_product_bits": 301,
"active_scale_prime_count": 6,
"available_public_transitions": 5,
"entry_chain_depth": 1,
"entry_level": 1
},
{
"active_q_count": 6,
"active_q_prime_ids": [
2,
3,
4,
5,
6,
7
],
"active_q_product_bits": 260,
"active_scale_prime_count": 5,
"available_public_transitions": 4,
"entry_chain_depth": 2,
"entry_level": 2
},
{
"active_q_count": 5,
"active_q_prime_ids": [
3,
4,
5,
6,
7
],
"active_q_product_bits": 220,
"active_scale_prime_count": 4,
"available_public_transitions": 3,
"entry_chain_depth": 3,
"entry_level": 3
},
{
"active_q_count": 4,
"active_q_prime_ids": [
4,
5,
6,
7
],
"active_q_product_bits": 180,
"active_scale_prime_count": 3,
"available_public_transitions": 2,
"entry_chain_depth": 4,
"entry_level": 4
},
{
"active_q_count": 3,
"active_q_prime_ids": [
5,
6,
7
],
"active_q_product_bits": 140,
"active_scale_prime_count": 2,
"available_public_transitions": 1,
"entry_chain_depth": 5,
"entry_level": 5
},
{
"active_q_count": 2,
"active_q_prime_ids": [
6,
7
],
"active_q_product_bits": 100,
"active_scale_prime_count": 1,
"available_public_transitions": 0,
"entry_chain_depth": 6,
"entry_level": 6
}
],
"logN": 14,
"maximum_security_budget_bits": 430,
"ntt_backend": "radix2_indexed",
"num_p_primes": 1,
"num_q_primes": 8,
"num_scale_primes": 7,
"p_product_bits": 60,
"p_rows": [
{
"modulus_bits": 60,
"modulus_decimal": "1152921504606683137",
"prime_id": 8,
"role": "key_switch_p_prime"
}
],
"preset": "slots8192-scale40-levels7-int64",
"public_level_count": 7,
"q0_product_bits": 340,
"q_rows": [
{
"modulus_bits": 40,
"modulus_decimal": "1099510054913",
"prime_id": 0,
"role": "scale_q_prime"
},
{
"modulus_bits": 41,
"modulus_decimal": "1099515691009",
"prime_id": 1,
"role": "scale_q_prime"
},
{
"modulus_bits": 40,
"modulus_decimal": "1099508121601",
"prime_id": 2,
"role": "scale_q_prime"
},
{
"modulus_bits": 41,
"modulus_decimal": "1099515789313",
"prime_id": 3,
"role": "scale_q_prime"
},
{
"modulus_bits": 40,
"modulus_decimal": "1099507695617",
"prime_id": 4,
"role": "scale_q_prime"
},
{
"modulus_bits": 41,
"modulus_decimal": "1099516280833",
"prime_id": 5,
"role": "scale_q_prime"
},
{
"modulus_bits": 40,
"modulus_decimal": "1099506515969",
"prime_id": 6,
"role": "scale_q_prime"
},
{
"modulus_bits": 60,
"modulus_decimal": "1152921504606748673",
"prime_id": 7,
"role": "structural_base_q_prime"
}
],
"ring_dimension": 16384,
"scale_bits": 40,
"security_bits": 128,
"security_budget_enforced": true,
"sigma": 3.19,
"torch_dtype": "torch.int64"
},
"entry_state": {
"axis": "public_source_level",
"construction": "direct_at_entry_level",
"entry_chain_depth_definition": "The number of leading scale-Q rows absent relative to Q_0; for a public FHElium value it equals entry_level and does not assert that the setup executed that many multiplications.",
"levels": [
{
"active_q_count": 8,
"active_q_prime_ids": [
0,
1,
2,
3,
4,
5,
6,
7
],
"active_q_product_bits": 340,
"active_scale_prime_count": 7,
"available_public_transitions": 6,
"entry_chain_depth": 0,
"entry_level": 0
},
{
"active_q_count": 7,
"active_q_prime_ids": [
1,
2,
3,
4,
5,
6,
7
],
"active_q_product_bits": 301,
"active_scale_prime_count": 6,
"available_public_transitions": 5,
"entry_chain_depth": 1,
"entry_level": 1
},
{
"active_q_count": 6,
"active_q_prime_ids": [
2,
3,
4,
5,
6,
7
],
"active_q_product_bits": 260,
"active_scale_prime_count": 5,
"available_public_transitions": 4,
"entry_chain_depth": 2,
"entry_level": 2
},
{
"active_q_count": 5,
"active_q_prime_ids": [
3,
4,
5,
6,
7
],
"active_q_product_bits": 220,
"active_scale_prime_count": 4,
"available_public_transitions": 3,
"entry_chain_depth": 3,
"entry_level": 3
},
{
"active_q_count": 4,
"active_q_prime_ids": [
4,
5,
6,
7
],
"active_q_product_bits": 180,
"active_scale_prime_count": 3,
"available_public_transitions": 2,
"entry_chain_depth": 4,
"entry_level": 4
},
{
"active_q_count": 3,
"active_q_prime_ids": [
5,
6,
7
],
"active_q_product_bits": 140,
"active_scale_prime_count": 2,
"available_public_transitions": 1,
"entry_chain_depth": 5,
"entry_level": 5
},
{
"active_q_count": 2,
"active_q_prime_ids": [
6,
7
],
"active_q_product_bits": 100,
"active_scale_prime_count": 1,
"available_public_transitions": 0,
"entry_chain_depth": 6,
"entry_level": 6
}
],
"multiplicative_history_definition": "Workload multiplicative depth before entry and depth added by the timed call are reported separately from public level."
},
"parameter_selection": {
"complete_qp_product_bits": 400,
"maximum_security_budget_bits": 430,
"rationale": "The maintained slots8192-scale40-levels7-int64 preset fixes logN=14, 8,192 complex slots, seven public levels, one key-switch P prime, and an enforced 128-bit security-table budget. The indexed radix-2 backend is the one fixed implementation shared by CPU and CUDA.",
"security_budget_status": "within_exact_builtin_budget"
}
}All public entry levels
Depth-aware operation matrix
| Operation | Level 0340 bits active Q | Level 1301 bits active Q | Level 2260 bits active Q | Level 3220 bits active Q | Level 4180 bits active Q | Level 5140 bits active Q | Level 6100 bits active Q |
|---|---|---|---|---|---|---|---|
| Encrypt | 19.3833 ms | 19.035 ms | 16.6874 ms | 16.3362 ms | 17.4057 ms | 18.2139 ms | 18.355 ms |
| Decrypt | 1.73908 ms | 2.09231 ms | 1.77407 ms | 1.653 ms | 2.54546 ms | 1.83208 ms | 1.58336 ms |
| Coefficient → NTT | 1.12443 ms | 1.12306 ms | 1.03917 ms | 1.01937 ms | 1.08866 ms | 1.06847 ms | 0.858283 ms |
| NTT → coefficient | 1.09808 ms | 1.08657 ms | 1.01252 ms | 0.972516 ms | 1.09968 ms | 1.05953 ms | 0.857853 ms |
| Add | 0.143416 ms | 0.200272 ms | 0.13314 ms | 0.122615 ms | 0.118168 ms | 0.11309 ms | 0.101863 ms |
| Add plaintext | 0.215004 ms | 0.275876 ms | 0.249736 ms | 0.251469 ms | 0.227623 ms | 0.219301 ms | 0.138769 ms |
| PT × CT multiply | 0.365721 ms | 0.377549 ms | 0.3188 ms | 0.281924 ms | 0.250117 ms | 0.221003 ms | 0.241194 ms |
| CT × CT multiply | 0.460123 ms | 0.465332 ms | 0.395956 ms | 0.467835 ms | 0.316007 ms | 0.327915 ms | 0.224378 ms |
| Relinearize | 9.25072 ms | 7.41647 ms | 6.94077 ms | 6.54396 ms | 6.20321 ms | 4.55298 ms | 4.32484 ms |
| Direct rotation | 7.53999 ms | 5.90582 ms | 5.46066 ms | 4.63669 ms | 4.12689 ms | 3.08986 ms | 2.71774 ms |
| Rescale | 0.330859 ms | 0.316697 ms | 0.499423 ms | 0.319762 ms | 0.227142 ms | 0.301534 ms | — |
| Modulus switch | 0.096416 ms | 0.080521 ms | 0.078598 ms | 0.080111 ms | 0.080191 ms | 0.053271 ms | — |
Validation evidence164 checks passed
| Check | Observed | Criterion | Status |
|---|---|---|---|
| Encrypt level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 0 semantic error | 2.593e-6 absolute | 2.593e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 0 semantic error | 2.609e-6 absolute | 2.609e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 0 semantic error | 2.609e-6 absolute | 2.609e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 0 semantic error | 2.609e-6 absolute | 2.609e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 0 semantic error | 5.205e-6 absolute | 5.205e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 0 semantic error | 2.609e-6 absolute | 2.609e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 0 semantic error | 2.661e-8 absolute | 2.661e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 0 semantic error | 5.014e-8 absolute | 5.014e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 0 semantic error | 5.014e-8 absolute | 5.014e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 0 semantic error | 2.607e-6 absolute | 2.607e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Rescale to next level level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rescale to next level level 0 semantic error | 2.609e-6 absolute | 2.609e-6 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Mod switch to next level level 0 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Mod switch to next level level 0 semantic error | 2.609e-6 absolute | 2.609e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Encrypt level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 1 semantic error | 2.589e-6 absolute | 2.589e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 1 semantic error | 2.567e-6 absolute | 2.567e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 1 semantic error | 2.567e-6 absolute | 2.567e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 1 semantic error | 2.567e-6 absolute | 2.567e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 1 semantic error | 5.101e-6 absolute | 5.101e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 1 semantic error | 2.567e-6 absolute | 2.567e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 1 semantic error | 2.618e-8 absolute | 2.618e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 1 semantic error | 4.955e-8 absolute | 4.955e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 1 semantic error | 4.955e-8 absolute | 4.955e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 1 semantic error | 2.561e-6 absolute | 2.561e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Rescale to next level level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rescale to next level level 1 semantic error | 2.567e-6 absolute | 2.567e-6 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Mod switch to next level level 1 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Mod switch to next level level 1 semantic error | 2.567e-6 absolute | 2.567e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Encrypt level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 2 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 2 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 2 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 2 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 2 semantic error | 5.179e-6 absolute | 5.179e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 2 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 2 semantic error | 2.653e-8 absolute | 2.653e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 2 semantic error | 5.035e-8 absolute | 5.035e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 2 semantic error | 5.035e-8 absolute | 5.035e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 2 semantic error | 2.614e-6 absolute | 2.614e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Rescale to next level level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rescale to next level level 2 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Mod switch to next level level 2 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Mod switch to next level level 2 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Encrypt level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 3 semantic error | 2.594e-6 absolute | 2.594e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 3 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 3 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 3 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 3 semantic error | 5.128e-6 absolute | 5.128e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 3 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 3 semantic error | 2.652e-8 absolute | 2.652e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 3 semantic error | 4.953e-8 absolute | 4.953e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 3 semantic error | 4.953e-8 absolute | 4.953e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 3 semantic error | 2.594e-6 absolute | 2.594e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Rescale to next level level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rescale to next level level 3 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Mod switch to next level level 3 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Mod switch to next level level 3 semantic error | 2.601e-6 absolute | 2.601e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Encrypt level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 4 semantic error | 2.607e-6 absolute | 2.607e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 4 semantic error | 2.525e-6 absolute | 2.525e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 4 semantic error | 2.525e-6 absolute | 2.525e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 4 semantic error | 2.525e-6 absolute | 2.525e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 4 semantic error | 5.117e-6 absolute | 5.117e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 4 semantic error | 2.525e-6 absolute | 2.525e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 4 semantic error | 2.575e-8 absolute | 2.575e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 4 semantic error | 4.955e-8 absolute | 4.955e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 4 semantic error | 4.955e-8 absolute | 4.955e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 4 semantic error | 2.514e-6 absolute | 2.514e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Rescale to next level level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rescale to next level level 4 semantic error | 2.525e-6 absolute | 2.525e-6 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Mod switch to next level level 4 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Mod switch to next level level 4 semantic error | 2.525e-6 absolute | 2.525e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Encrypt level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 5 semantic error | 2.570e-6 absolute | 2.570e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 5 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 5 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 5 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 5 semantic error | 5.164e-6 absolute | 5.164e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 5 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 5 semantic error | 2.630e-8 absolute | 2.630e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 5 semantic error | 5.022e-8 absolute | 5.022e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 5 semantic error | 5.022e-8 absolute | 5.022e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 5 semantic error | 2.577e-6 absolute | 2.577e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Rescale to next level level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rescale to next level level 5 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Mod switch to next level level 5 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Mod switch to next level level 5 semantic error | 2.579e-6 absolute | 2.579e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Encrypt level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Encrypt level 6 semantic error | 2.543e-6 absolute | 2.543e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Decrypt level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Decrypt level 6 semantic error | 2.614e-6 absolute | 2.614e-6 absolute · limit ≤ 1.000e-5 absolute | ✓ Passed |
| Coefficient domain to NTT domain level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Coefficient domain to NTT domain level 6 semantic error | 2.614e-6 absolute | 2.614e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| NTT domain to coefficient domain level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| NTT domain to coefficient domain level 6 semantic error | 2.614e-6 absolute | 2.614e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add level 6 semantic error | 5.244e-6 absolute | 5.244e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Add plaintext level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Add plaintext level 6 semantic error | 2.614e-6 absolute | 2.614e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
| Multiply plaintext level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply plaintext level 6 semantic error | 2.666e-8 absolute | 2.666e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Multiply level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Multiply level 6 semantic error | 5.089e-8 absolute | 5.089e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Relinearize level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Relinearize level 6 semantic error | 5.089e-8 absolute | 5.089e-8 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
| Rotate with key level 6 exit state | 0 fields | 0 fields · limit = 0 fields | ✓ Passed |
| Rotate with key level 6 semantic error | 2.611e-6 absolute | 2.611e-6 absolute · limit ≤ 2.000e-5 absolute | ✓ Passed |
Timed work and provenance
Synchronize the selected engine device before each sample and after the public call; CPU calls complete synchronously. Pre-sample synchronization is outside elapsed time and post-call completion is inside it.
- one named functional public CkksEngine call
- output allocation and every representation conversion specified by that call
- engine and native-table construction
- key generation or lookup
- cleartext input construction
- encoding and operation-ready plaintext preparation
- setup encryption and domain conversion
- pending-product construction for relinearization or rescale
- correctness decryption, decoding, and state validation
- cleanup
Benchmark 2 · NTT operations
Indexed radix-2 NTT operations
CPU executionindexed-ntt-operations · coreCKKS parameters
Ring geometry
N = 2^148,192 complex slots
Scale and state
Scale unspecifiedModulus budget
Q chainExecution policy
Radix-2 indexed referenceQ, QP entry basis
Parameter-selection notes
Policyone identical CPU/CUDA indexed-radix2 plan
Exact CKKS parameters and states
{
"ckks_plan": {
"logN": 14,
"ntt_backend": "radix2_indexed",
"preset": "slots8192-scale40-levels7-int64",
"slot_count": 8192
},
"entry_state": {
"entry_levels": [
0,
1,
2,
3,
4,
5,
6
],
"modulus_bases": [
"Q",
"QP"
],
"operations": [
"forward_ntt",
"inverse_ntt",
"roundtrip"
]
},
"parameter_selection": {
"hardware_adaptive": false,
"policy": "one identical CPU/CUDA indexed-radix2 plan"
}
}Fixed cross-backend primitive
Indexed radix-2 NTT operations
Validation evidence14 checks passed
| Check | Observed | Criterion | Status |
|---|---|---|---|
| Indexed NTT level 0 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 0 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 1 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 1 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 2 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 2 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 3 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 3 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 4 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 4 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 5 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 5 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 6 q roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
| Indexed NTT level 6 QP roundtrip | 0 residues | 0 residues · limit = 0 residues | ✓ Passed |
Timed work and provenance
Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.
- native indexed radix-2 transform
- input construction
- host-to-device transfer
- input restoration
- correctness roundtrip
Benchmark 3 · Matrix multiplication
Plaintext × ciphertext dense matrix multiplication
CPU executiondense-matrix-multiplication-ptct · coreCKKS parameters
Ring geometry
N = 2^148,192 complex slots
Scale and state
Δ 1.100e+12 · level 0Modulus budget
Q chainExecution policy
Radix-2 indexed referenceParameter-selection notes
Policyone identical CPU/CUDA local-device plan
Exact CKKS parameters and states
{
"ckks_plan": {
"logN": 14,
"ntt_backend": "radix2_indexed",
"preset": "slots8192-scale40-levels7-int64",
"slot_count": 8192
},
"entry_state": {
"level": 0,
"matrix_shape": [
16,
16
],
"scale": 1099511627776
},
"parameter_selection": {
"hardware_adaptive": false,
"policy": "one identical CPU/CUDA local-device plan"
}
}Plaintext × ciphertext · one local device
Fixed 16 × 16 dense matrix multiplication
Validation evidence1 check passed
| Check | Observed | Criterion | Status |
|---|---|---|---|
| Dense matrix PT × CT cleartext oracle | 1.042e-7 absolute | 1.042e-7 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
Timed work and provenance
Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.
- all output columns
- rotations
- multiplications
- accumulation
- relinearization when required
- rescale
- engine and key construction
- input preparation and encryption
- decryption and correctness oracle
Benchmark 4 · Matrix multiplication
Ciphertext × ciphertext dense matrix multiplication
CPU executiondense-matrix-multiplication-ctct · coreCKKS parameters
Ring geometry
N = 2^148,192 complex slots
Scale and state
Δ 1.100e+12 · level 0Modulus budget
Q chainExecution policy
Radix-2 indexed referenceParameter-selection notes
Policyone identical CPU/CUDA local-device plan
Exact CKKS parameters and states
{
"ckks_plan": {
"logN": 14,
"ntt_backend": "radix2_indexed",
"preset": "slots8192-scale40-levels7-int64",
"slot_count": 8192
},
"entry_state": {
"level": 0,
"matrix_shape": [
16,
16
],
"scale": 1099511627776
},
"parameter_selection": {
"hardware_adaptive": false,
"policy": "one identical CPU/CUDA local-device plan"
}
}Ciphertext × ciphertext · one local device
Fixed 16 × 16 dense matrix multiplication
Validation evidence1 check passed
| Check | Observed | Criterion | Status |
|---|---|---|---|
| Dense matrix CT × CT cleartext oracle | 4.327e-7 absolute | 4.327e-7 absolute · limit ≤ 3.000e-5 absolute | ✓ Passed |
Timed work and provenance
Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.
- all output columns
- rotations
- multiplications
- accumulation
- relinearization when required
- rescale
- engine and key construction
- input preparation and encryption
- decryption and correctness oracle
Benchmark 5 · Polynomial evaluation
Affine and degree-four polynomial methods
CPU executionpolynomial-evaluation · coreCKKS parameters
Ring geometry
N = 2^148,192 complex slots
Scale and state
Δ 1.100e+12 · level 0Modulus budget
Q chainExecution policy
Radix-2 indexed referenceParameter-selection notes
Policycommon CPU/CUDA affine-and-degree4 plan
Exact CKKS parameters and states
{
"ckks_plan": {
"logN": 14,
"ntt_backend": "radix2_indexed",
"preset": "slots8192-scale40-levels7-int64",
"slot_count": 8192
},
"entry_state": {
"level": 0,
"scale": 1099511627776
},
"method_states": [
{
"method_id": "affine-d1-balanced",
"observed_exit_state": {
"active_q_count": 7,
"component_count": 2,
"level": 1,
"modulus_basis": "Q",
"polynomial_domain": "coefficient",
"residue_representation": "standard",
"scale": 1099511627776
},
"predicted_exit_level": 1
},
{
"method_id": "dense-power-d4-balanced",
"observed_exit_state": {
"active_q_count": 5,
"component_count": 2,
"level": 3,
"modulus_basis": "Q",
"polynomial_domain": "coefficient",
"residue_representation": "standard",
"scale": 1099511627776
},
"predicted_exit_level": 3
},
{
"method_id": "dense-power-d4-horner",
"observed_exit_state": {
"active_q_count": 4,
"component_count": 2,
"level": 4,
"modulus_basis": "Q",
"polynomial_domain": "coefficient",
"residue_representation": "standard",
"scale": 1099511627776
},
"predicted_exit_level": 4
},
{
"method_id": "dense-power-d4-paterson-stockmeyer-k2",
"observed_exit_state": {
"active_q_count": 5,
"component_count": 2,
"level": 3,
"modulus_basis": "Q",
"polynomial_domain": "coefficient",
"residue_representation": "standard",
"scale": 1099511627776
},
"predicted_exit_level": 3
}
],
"parameter_selection": {
"calibration_status": "controlled cross-backend evidence required before release",
"hardware_adaptive": false,
"policy": "common CPU/CUDA affine-and-degree4 plan"
}
}Affine and degree-four methods
Polynomial method matrix
Affine D1
degree 1| Method | Required levels | Latency ↓ |
|---|---|---|
| Balanced | 1 | 15.5468 ms |
Dense power D4
degree 4| Method | Required levels | Latency ↓ |
|---|---|---|
| Balanced | 3 | 101.087 ms |
| Horner | 4 | 80.1712 ms |
| Paterson stockmeyer k2 | 3 | 86.8223 ms |
Validation evidence8 checks passed
| Check | Observed | Criterion | Status |
|---|---|---|---|
| Affine D1 balanced independent polynomial oracle | 1.298e-6 absolute | 1.298e-6 absolute · limit ≤ 8.000e-6 absolute | ✓ Passed |
| Affine D1 balanced exit level | 1 level | 1 level · limit = 1 level | ✓ Passed |
| Dense power D4 balanced independent polynomial oracle | 2.553e-6 absolute | 2.553e-6 absolute · limit ≤ 1.400e-5 absolute | ✓ Passed |
| Dense power D4 balanced exit level | 3 level | 3 level · limit = 3 level | ✓ Passed |
| Dense power D4 horner independent polynomial oracle | 5.319e-6 absolute | 5.319e-6 absolute · limit ≤ 1.200e-5 absolute | ✓ Passed |
| Dense power D4 horner exit level | 4 level | 4 level · limit = 4 level | ✓ Passed |
| Dense power D4 paterson stockmeyer k2 independent polynomial oracle | 4.356e-6 absolute | 4.356e-6 absolute · limit ≤ 1.200e-5 absolute | ✓ Passed |
| Dense power D4 paterson stockmeyer k2 exit level | 3 level | 3 level · limit = 3 level | ✓ Passed |
Timed work and provenance
Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.
- coefficient preparation
- ciphertext arithmetic
- relinearization
- rescale
- engine and key construction
- input encryption
- output decryption and oracle