Skip to content

Benchmark v1 results

CUDA GPU 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

CUDA GPU 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
Encrypt0.319207 ms0.324285 ms0.330344 ms0.353078 ms0.271606 ms0.325737 ms0.306298 ms
Decrypt0.467339 ms0.40757 ms0.391706 ms0.430094 ms0.444004 ms0.402762 ms0.405667 ms
Coefficient → NTT0.094121 ms0.091987 ms0.096915 ms0.099779 ms0.097836 ms0.102593 ms0.095643 ms
NTT → coefficient0.145869 ms0.131126 ms0.100119 ms0.102193 ms0.089294 ms0.097075 ms0.092028 ms
Add0.027902 ms0.029665 ms0.034722 ms0.034292 ms0.032218 ms0.031938 ms0.030236 ms
Add plaintext0.056114 ms0.056795 ms0.057106 ms0.059419 ms0.05397 ms0.050676 ms0.062374 ms
PT × CT multiply0.060801 ms0.055804 ms0.061141 ms0.060631 ms0.059018 ms0.058668 ms0.05349 ms
CT × CT multiply0.06735 ms0.071327 ms0.099619 ms0.082043 ms0.077836 ms0.069744 ms0.071607 ms
Relinearize0.829411 ms0.649302 ms0.623022 ms0.571395 ms0.508831 ms0.409042 ms0.373789 ms
Direct rotation0.666618 ms0.561781 ms0.528671 ms0.489182 ms0.397114 ms0.324876 ms0.298277 ms
Rescale0.06723 ms0.063976 ms0.074732 ms0.06658 ms0.061071 ms0.059609 ms
Modulus switch0.03338 ms0.036504 ms0.036154 ms0.031387 ms0.032678 ms0.035964 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

CUDA GPU 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.03999 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

CUDA GPU 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 latency70.5368 msMatrix size 16 · Operand mode ptct · Phase end-to-end
Logical MAC rate58,069 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

CUDA GPU 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 latency171.999 msMatrix size 16 · Operand mode ctct · Phase end-to-end
Logical MAC rate23,814.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

CUDA GPU 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 ↓
Balanced10.826256 ms

Dense power D4

degree 4
Polynomial methods for dense-power-d4
MethodRequired levelsLatency ↓
Balanced36.08048 ms
Horner45.02758 ms
Paterson stockmeyer k235.27063 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:7c4d3825a48f67e997a7b6aeaf7aff1d359cd36c3baa0b65c4253cd1ee60c496
Download JSON

Towards full-stack encrypted execution infrastructures