- Logical CPUs
- 48
- Architecture
- x86_64
- System RAM
- 503 GiB
FHElium Benchmark v1
FHElium 0.10.0 ·
System under test
Execution hardware and host
- Memory
- 95 GiB
- Compute
- 12.0
- SMs
- 188
- Memory bus
- 512-bit
- Memory
- 95 GiB
- Compute
- 12.0
- SMs
- 188
- Memory bus
- 512-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.9
- Operating system
- Linux-6.8.0-137-generic-x86_64-with-glibc2.39
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 | 12 ms | 11.2782 ms | 11.1889 ms | 13.0537 ms | 13.867 ms | 14.0241 ms | 13.6707 ms |
| Decrypt | 1.45821 ms | 1.24355 ms | 1.32332 ms | 1.40175 ms | 1.14677 ms | 1.23378 ms | 1.38659 ms |
| Coefficient → NTT | 1.03396 ms | 0.906976 ms | 0.865936 ms | 0.857322 ms | 0.705555 ms | 0.649902 ms | 0.825635 ms |
| NTT → coefficient | 1.16009 ms | 0.895009 ms | 1.00364 ms | 0.87571 ms | 0.684514 ms | 0.836532 ms | 0.663843 ms |
| Add | 0.099068 ms | 0.118857 ms | 0.096835 ms | 0.092388 ms | 0.084366 ms | 0.097176 ms | 0.076575 ms |
| Add plaintext | 0.230034 ms | 0.219889 ms | 0.192629 ms | 0.198798 ms | 0.17343 ms | 0.154631 ms | 0.168312 ms |
| PT × CT multiply | 0.229734 ms | 0.192147 ms | 0.217074 ms | 0.173319 ms | 0.150194 ms | 0.134802 ms | 0.135603 ms |
| CT × CT multiply | 0.382803 ms | 0.312247 ms | 0.294651 ms | 0.269293 ms | 0.268251 ms | 0.232458 ms | 0.179008 ms |
| Relinearize | 7.5824 ms | 6.29899 ms | 5.49892 ms | 4.2561 ms | 3.65021 ms | 3.74585 ms | 2.58451 ms |
| Direct rotation | 7.40087 ms | 4.85517 ms | 4.28014 ms | 3.44551 ms | 2.98453 ms | 2.65449 ms | 1.71985 ms |
| Rescale | 0.26752 ms | 0.211686 ms | 0.247791 ms | 0.221532 ms | 0.146579 ms | 0.194791 ms | — |
| Modulus switch | 0.058238 ms | 0.076665 ms | 0.062773 ms | 0.101211 ms | 0.064567 ms | 0.062834 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 | 9.79433 ms |
Dense power D4
degree 4| Method | Required levels | Latency ↓ |
|---|---|---|
| Balanced | 3 | 74.2141 ms |
| Horner | 4 | 65.2844 ms |
| Paterson stockmeyer k2 | 3 | 68.4309 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