Skip to content

Benchmark v1 results

CPU benchmark run

FHElium Benchmark v1

FHElium 0.10.0 ·

System under test

Execution hardware and host

Host CPUApple M4
Logical CPUs
10
Architecture
arm64
System RAM
32 GiB
FHElium
0.10.0 · 0e0552608ec1 · local changes
Torch
2.13.0
Torch CUDA build
Not reported
NCCL
Not reported
Python
3.13.15
Operating system
macOS-26.4.1-arm64-arm-64bit-Mach-O

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
Encrypt14.621 ms14.4399 ms12.6163 ms12.8985 ms18.4805 ms11.8444 ms12.8644 ms
Decrypt2.31075 ms2.18337 ms1.96396 ms1.87212 ms1.71396 ms1.50275 ms1.35771 ms
Coefficient → NTT1.89129 ms1.64212 ms1.49375 ms1.39554 ms1.31083 ms1.11992 ms0.955209 ms
NTT → coefficient1.94558 ms1.69904 ms1.59521 ms1.42075 ms1.31208 ms1.13683 ms1.00071 ms
Add0.206167 ms0.1715 ms0.165625 ms0.124166 ms0.137458 ms0.0772921 ms0.103708 ms
Add plaintext0.320625 ms0.299167 ms0.285541 ms0.314125 ms0.169375 ms0.156125 ms0.160792 ms
PT × CT multiply0.28925 ms0.32575 ms0.282542 ms0.242334 ms0.203375 ms0.183625 ms0.141333 ms
CT × CT multiply0.684875 ms0.587791 ms0.556458 ms0.496208 ms0.464542 ms0.247917 ms0.201666 ms
Relinearize14.9751 ms12.5668 ms10.2189 ms8.42746 ms7.02842 ms5.3865 ms4.12129 ms
Direct rotation12.4555 ms10.372 ms8.33446 ms6.3595 ms5.22783 ms3.85621 ms2.7085 ms
Rescale0.335667 ms0.352875 ms0.545708 ms0.255334 ms0.282042 ms0.156458 ms
Modulus switch0.139416 ms0.0865 ms0.1075 ms0.092875 ms0.059625 ms0.028833 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.635958 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 latency1,501.74 msMatrix size 16 · Operand mode ptct · Phase end-to-end
Logical MAC rate2,727.51 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 latency4,118.24 msMatrix size 16 · Operand mode ctct · Phase end-to-end
Logical MAC rate994.601 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 ↓
Balanced112.3145 ms

Dense power D4

degree 4
Polynomial methods for dense-power-d4
MethodRequired levelsLatency ↓
Balanced3103.953 ms
Horner482.5969 ms
Paterson stockmeyer k2391.1048 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:b99e2a91072e1964f24d916ea2b2a7c7fd45d7227a737ec9246b50d304a5c5f8
Download JSON

Towards full-stack encrypted execution infrastructures