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 7975WX 32-Cores
Logical CPUs
64
Architecture
x86_64
System RAM
503 GiB
CUDA execution GPU 0NVIDIA RTX A6000
Memory
47.4 GiB
Compute
8.6
SMs
84
Memory bus
384-bit
CUDA execution GPU 1NVIDIA RTX A6000
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 · 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
Encrypt19.3833 ms19.035 ms16.6874 ms16.3362 ms17.4057 ms18.2139 ms18.355 ms
Decrypt1.73908 ms2.09231 ms1.77407 ms1.653 ms2.54546 ms1.83208 ms1.58336 ms
Coefficient → NTT1.12443 ms1.12306 ms1.03917 ms1.01937 ms1.08866 ms1.06847 ms0.858283 ms
NTT → coefficient1.09808 ms1.08657 ms1.01252 ms0.972516 ms1.09968 ms1.05953 ms0.857853 ms
Add0.143416 ms0.200272 ms0.13314 ms0.122615 ms0.118168 ms0.11309 ms0.101863 ms
Add plaintext0.215004 ms0.275876 ms0.249736 ms0.251469 ms0.227623 ms0.219301 ms0.138769 ms
PT × CT multiply0.365721 ms0.377549 ms0.3188 ms0.281924 ms0.250117 ms0.221003 ms0.241194 ms
CT × CT multiply0.460123 ms0.465332 ms0.395956 ms0.467835 ms0.316007 ms0.327915 ms0.224378 ms
Relinearize9.25072 ms7.41647 ms6.94077 ms6.54396 ms6.20321 ms4.55298 ms4.32484 ms
Direct rotation7.53999 ms5.90582 ms5.46066 ms4.63669 ms4.12689 ms3.08986 ms2.71774 ms
Rescale0.330859 ms0.316697 ms0.499423 ms0.319762 ms0.227142 ms0.301534 ms
Modulus switch0.096416 ms0.080521 ms0.078598 ms0.080111 ms0.080191 ms0.053271 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.571201 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 latency923.735 msMatrix size 16 · Operand mode ptct · Phase end-to-end
Logical MAC rate4,434.17 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 latency2,211.21 msMatrix size 16 · Operand mode ctct · Phase end-to-end
Logical MAC rate1,852.38 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 ↓
Balanced115.5468 ms

Dense power D4

degree 4
Polynomial methods for dense-power-d4
MethodRequired levelsLatency ↓
Balanced3101.087 ms
Horner480.1712 ms
Paterson stockmeyer k2386.8223 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:fc48f2dafaee311c92cfaa9c7ea332e67aef120cd5529ff0e6019da99b60d559
Download JSON

Towards full-stack encrypted execution infrastructures