Skip to content

Benchmark v1 results

CPU benchmark run

FHElium Benchmark v1

FHElium 0.10.0 ·

System under test

Execution hardware and host

Host CPUAMD Ryzen Threadripper PRO 9965WX 24-Cores
Logical CPUs
48
Architecture
x86_64
System RAM
503 GiB
CUDA execution GPU 0NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition
Memory
95 GiB
Compute
12.0
SMs
188
Memory bus
512-bit
CUDA execution GPU 1NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition
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 · core
measured

CKKS parameters

Ring geometry

N = 2^14

16,384 coefficients · 8,192 complex slots · torch.int64 residues

Scale and state

40-bit default scale

Modulus budget

Q 8 / 340 bits · P 1

400 complete Q·P bits · 430 security-budget bits · 128-bit security target

Execution policy

Radix-2 indexed reference

security 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

Selected operation metric for the chosen CKKS entry-level range
OperationLevel 0340 bits active QLevel 1301 bits active QLevel 2260 bits active QLevel 3220 bits active QLevel 4180 bits active QLevel 5140 bits active QLevel 6100 bits active Q
Encrypt12 ms11.2782 ms11.1889 ms13.0537 ms13.867 ms14.0241 ms13.6707 ms
Decrypt1.45821 ms1.24355 ms1.32332 ms1.40175 ms1.14677 ms1.23378 ms1.38659 ms
Coefficient → NTT1.03396 ms0.906976 ms0.865936 ms0.857322 ms0.705555 ms0.649902 ms0.825635 ms
NTT → coefficient1.16009 ms0.895009 ms1.00364 ms0.87571 ms0.684514 ms0.836532 ms0.663843 ms
Add0.099068 ms0.118857 ms0.096835 ms0.092388 ms0.084366 ms0.097176 ms0.076575 ms
Add plaintext0.230034 ms0.219889 ms0.192629 ms0.198798 ms0.17343 ms0.154631 ms0.168312 ms
PT × CT multiply0.229734 ms0.192147 ms0.217074 ms0.173319 ms0.150194 ms0.134802 ms0.135603 ms
CT × CT multiply0.382803 ms0.312247 ms0.294651 ms0.269293 ms0.268251 ms0.232458 ms0.179008 ms
Relinearize7.5824 ms6.29899 ms5.49892 ms4.2561 ms3.65021 ms3.74585 ms2.58451 ms
Direct rotation7.40087 ms4.85517 ms4.28014 ms3.44551 ms2.98453 ms2.65449 ms1.71985 ms
Rescale0.26752 ms0.211686 ms0.247791 ms0.221532 ms0.146579 ms0.194791 ms
Modulus switch0.058238 ms0.076665 ms0.062773 ms0.101211 ms0.064567 ms0.062834 ms
Validation evidence164 checks passed
Correctness evidence
CheckObservedCriterionStatus
Encrypt level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 0 semantic error2.593e-6 absolute2.593e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 0 semantic error2.609e-6 absolute2.609e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 0 semantic error2.609e-6 absolute2.609e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 0 semantic error2.609e-6 absolute2.609e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 0 semantic error5.205e-6 absolute5.205e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 0 semantic error2.609e-6 absolute2.609e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 0 semantic error2.661e-8 absolute2.661e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 0 semantic error5.014e-8 absolute5.014e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 0 semantic error5.014e-8 absolute5.014e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 0 semantic error2.607e-6 absolute2.607e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Rescale to next level level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rescale to next level level 0 semantic error2.609e-6 absolute2.609e-6 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Mod switch to next level level 0 exit state0 fields0 fields · limit = 0 fields✓ Passed
Mod switch to next level level 0 semantic error2.609e-6 absolute2.609e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Encrypt level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 1 semantic error2.589e-6 absolute2.589e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 1 semantic error2.567e-6 absolute2.567e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 1 semantic error2.567e-6 absolute2.567e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 1 semantic error2.567e-6 absolute2.567e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 1 semantic error5.101e-6 absolute5.101e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 1 semantic error2.567e-6 absolute2.567e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 1 semantic error2.618e-8 absolute2.618e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 1 semantic error4.955e-8 absolute4.955e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 1 semantic error4.955e-8 absolute4.955e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 1 semantic error2.561e-6 absolute2.561e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Rescale to next level level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rescale to next level level 1 semantic error2.567e-6 absolute2.567e-6 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Mod switch to next level level 1 exit state0 fields0 fields · limit = 0 fields✓ Passed
Mod switch to next level level 1 semantic error2.567e-6 absolute2.567e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Encrypt level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 2 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 2 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 2 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 2 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 2 semantic error5.179e-6 absolute5.179e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 2 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 2 semantic error2.653e-8 absolute2.653e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 2 semantic error5.035e-8 absolute5.035e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 2 semantic error5.035e-8 absolute5.035e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 2 semantic error2.614e-6 absolute2.614e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Rescale to next level level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rescale to next level level 2 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Mod switch to next level level 2 exit state0 fields0 fields · limit = 0 fields✓ Passed
Mod switch to next level level 2 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Encrypt level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 3 semantic error2.594e-6 absolute2.594e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 3 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 3 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 3 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 3 semantic error5.128e-6 absolute5.128e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 3 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 3 semantic error2.652e-8 absolute2.652e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 3 semantic error4.953e-8 absolute4.953e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 3 semantic error4.953e-8 absolute4.953e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 3 semantic error2.594e-6 absolute2.594e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Rescale to next level level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rescale to next level level 3 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Mod switch to next level level 3 exit state0 fields0 fields · limit = 0 fields✓ Passed
Mod switch to next level level 3 semantic error2.601e-6 absolute2.601e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Encrypt level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 4 semantic error2.607e-6 absolute2.607e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 4 semantic error2.525e-6 absolute2.525e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 4 semantic error2.525e-6 absolute2.525e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 4 semantic error2.525e-6 absolute2.525e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 4 semantic error5.117e-6 absolute5.117e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 4 semantic error2.525e-6 absolute2.525e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 4 semantic error2.575e-8 absolute2.575e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 4 semantic error4.955e-8 absolute4.955e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 4 semantic error4.955e-8 absolute4.955e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 4 semantic error2.514e-6 absolute2.514e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Rescale to next level level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rescale to next level level 4 semantic error2.525e-6 absolute2.525e-6 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Mod switch to next level level 4 exit state0 fields0 fields · limit = 0 fields✓ Passed
Mod switch to next level level 4 semantic error2.525e-6 absolute2.525e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Encrypt level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 5 semantic error2.570e-6 absolute2.570e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 5 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 5 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 5 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 5 semantic error5.164e-6 absolute5.164e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 5 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 5 semantic error2.630e-8 absolute2.630e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 5 semantic error5.022e-8 absolute5.022e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 5 semantic error5.022e-8 absolute5.022e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 5 semantic error2.577e-6 absolute2.577e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Rescale to next level level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rescale to next level level 5 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Mod switch to next level level 5 exit state0 fields0 fields · limit = 0 fields✓ Passed
Mod switch to next level level 5 semantic error2.579e-6 absolute2.579e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Encrypt level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Encrypt level 6 semantic error2.543e-6 absolute2.543e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Decrypt level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Decrypt level 6 semantic error2.614e-6 absolute2.614e-6 absolute · limit ≤ 1.000e-5 absolute✓ Passed
Coefficient domain to NTT domain level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Coefficient domain to NTT domain level 6 semantic error2.614e-6 absolute2.614e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
NTT domain to coefficient domain level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
NTT domain to coefficient domain level 6 semantic error2.614e-6 absolute2.614e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add level 6 semantic error5.244e-6 absolute5.244e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Add plaintext level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Add plaintext level 6 semantic error2.614e-6 absolute2.614e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Multiply plaintext level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply plaintext level 6 semantic error2.666e-8 absolute2.666e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Multiply level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Multiply level 6 semantic error5.089e-8 absolute5.089e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Relinearize level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Relinearize level 6 semantic error5.089e-8 absolute5.089e-8 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Rotate with key level 6 exit state0 fields0 fields · limit = 0 fields✓ Passed
Rotate with key level 6 semantic error2.611e-6 absolute2.611e-6 absolute · limit ≤ 2.000e-5 absolute✓ Passed
Timed work and provenance
depth-aware-single-public-ckks-callOne functional public CkksEngine call at one exact entry level, with synchronized device completion.

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.

Includes
  • one named functional public CkksEngine call
  • output allocation and every representation conversion specified by that call
Excludes
  • 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 · core
measured

CKKS parameters

Ring geometry

N = 2^14

8,192 complex slots

Scale and state

Scale unspecified

Modulus budget

Q chain

Execution policy

Radix-2 indexed reference

Q, 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

Selected-cell latency0.50106 msRadix-2 indexed reference
Validation evidence14 checks passed
Correctness evidence
CheckObservedCriterionStatus
Indexed NTT level 0 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 0 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 1 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 1 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 2 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 2 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 3 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 3 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 4 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 4 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 5 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 5 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 6 q roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Indexed NTT level 6 QP roundtrip0 residues0 residues · limit = 0 residues✓ Passed
Timed work and provenance
indexed-radix2-ntt-callOne fixed indexed radix-2 NTT operation on a prepared active-prime tensor.

Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.

Includes
  • native indexed radix-2 transform
Excludes
  • input construction
  • host-to-device transfer
  • input restoration
  • correctness roundtrip

Benchmark 3 · Matrix multiplication

Plaintext × ciphertext dense matrix multiplication

CPU executiondense-matrix-multiplication-ptct · core
measured

CKKS parameters

Ring geometry

N = 2^14

8,192 complex slots

Scale and state

Δ 1.100e+12 · level 0

Modulus budget

Q chain

Execution policy

Radix-2 indexed reference
Parameter-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

End-to-end latency919.319 msMatrix size 16 · Operand mode ptct · Phase end-to-end
Logical MAC rate4,455.47 logical-macs/sMatrix size 16 · Operand mode ptct · Phase end-to-end
Validation evidence1 check passed
Correctness evidence
CheckObservedCriterionStatus
Dense matrix PT × CT cleartext oracle1.042e-7 absolute1.042e-7 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Timed work and provenance
dense-matrix-ptct-local-deviceOne complete fixed 16x16 encrypted matrix product on one local device.

Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.

Includes
  • all output columns
  • rotations
  • multiplications
  • accumulation
  • relinearization when required
  • rescale
Excludes
  • 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 · core
measured

CKKS parameters

Ring geometry

N = 2^14

8,192 complex slots

Scale and state

Δ 1.100e+12 · level 0

Modulus budget

Q chain

Execution policy

Radix-2 indexed reference
Parameter-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

End-to-end latency1,881.4 msMatrix size 16 · Operand mode ctct · Phase end-to-end
Logical MAC rate2,177.1 logical-macs/sMatrix size 16 · Operand mode ctct · Phase end-to-end
Validation evidence1 check passed
Correctness evidence
CheckObservedCriterionStatus
Dense matrix CT × CT cleartext oracle4.327e-7 absolute4.327e-7 absolute · limit ≤ 3.000e-5 absolute✓ Passed
Timed work and provenance
dense-matrix-ctct-local-deviceOne complete fixed 16x16 encrypted matrix product on one local device.

Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.

Includes
  • all output columns
  • rotations
  • multiplications
  • accumulation
  • relinearization when required
  • rescale
Excludes
  • 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 · core
measured

CKKS parameters

Ring geometry

N = 2^14

8,192 complex slots

Scale and state

Δ 1.100e+12 · level 0

Modulus budget

Q chain

Execution policy

Radix-2 indexed reference
Parameter-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
Polynomial methods for affine-d1
MethodRequired levelsLatency ↓
Balanced19.79433 ms

Dense power D4

degree 4
Polynomial methods for dense-power-d4
MethodRequired levelsLatency ↓
Balanced374.2141 ms
Horner465.2844 ms
Paterson stockmeyer k2368.4309 ms
Validation evidence8 checks passed
Correctness evidence
CheckObservedCriterionStatus
Affine D1 balanced independent polynomial oracle1.298e-6 absolute1.298e-6 absolute · limit ≤ 8.000e-6 absolute✓ Passed
Affine D1 balanced exit level1 level1 level · limit = 1 level✓ Passed
Dense power D4 balanced independent polynomial oracle2.553e-6 absolute2.553e-6 absolute · limit ≤ 1.400e-5 absolute✓ Passed
Dense power D4 balanced exit level3 level3 level · limit = 3 level✓ Passed
Dense power D4 horner independent polynomial oracle5.319e-6 absolute5.319e-6 absolute · limit ≤ 1.200e-5 absolute✓ Passed
Dense power D4 horner exit level4 level4 level · limit = 4 level✓ Passed
Dense power D4 paterson stockmeyer k2 independent polynomial oracle4.356e-6 absolute4.356e-6 absolute · limit ≤ 1.200e-5 absolute✓ Passed
Dense power D4 paterson stockmeyer k2 exit level3 level3 level · limit = 3 level✓ Passed
Timed work and provenance
fixed-affine-degree4-polynomial-methodOne public fixed-polynomial evaluator invocation for one method row.

Synchronize the selected engine device before and after every sample; CPU calls complete synchronously.

Includes
  • coefficient preparation
  • ciphertext arithmetic
  • relinearization
  • rescale
Excludes
  • engine and key construction
  • input encryption
  • output decryption and oracle
Raw reportsha256:31aca07aaa985fbec8732ed5d6d8ed6130dc3a84486f9ed180837d3fb5f5c700
Download JSON

Towards full-stack encrypted execution infrastructures