mirror of
https://github.com/luxfhe/torus.git
synced 2026-10-30 17:07:26 +00:00
Forked from upstream concrete (BSD-3-Clause-Clear, © 2024 ZAMA) at HEAD
ecb729bb. Modifications copyright © 2026 Lux Industries Inc.
Rebranding scope:
- Python module concrete → torus (across frontends/torus-python)
- Rust module concrete-* → torus-* (across frontends/torus-rust)
- MLIR dialect concretelang → toruslang (across compilers/torus-compiler)
- Compiler optimizer concrete-optimizer → torus-optimizer
- Backend concrete-cpu / concrete-cuda → torus-cpu / torus-cuda
- Wire protocol concrete-protocol → torus-protocol
- Parameter-curves concrete-security-curves-* → torus-security-curves-*
- Public symbols concretelib → toruslib, ConcreteLang → TorusLang
- URLs github.com/zama-ai/concrete → github.com/luxfhe/torus
- URLs docs.zama.ai/concrete → docs.luxfhe.com/torus
Legal compliance:
- LICENSE.txt retains original Copyright © 2024 ZAMA verbatim (§1-§2)
- LICENSE.txt adds modifications copyright © 2026 Lux Industries Inc.
- §3 endorsement clause: Torus is marketed exclusively as a Lux product;
no Zama name used in README, docs, or marketing
- NOTICE file provides factual attribution per legal best practice
(not endorsement; required by upstream BSD-3-Clause-Clear)
README + NOTICE rewritten from scratch with Lux brand:
- Quick-start in Python (torus.fhe)
- Architecture diagram showing the gen-1 vtbl integration path
(luxcpp/gpu → lux-private/gpu-kernels for CUDA/Metal/WebGPU)
- Scheme coverage table: TFHE (luxfi/fhe), CKKS/BGV/BFV (luxfi/lattice)
- Lux FHE family table: Torus / TorusVM / TorusEVM / TorusML / TorusNet
Known limitations (phase-2A scope):
- PyPI package torus-fhe not yet published; the torus Python module
is renamed structurally but pip-installable distribution is a
follow-up (Phase 2A.1)
- MLIR dialect rename is text-level; the compiler-internal LLVM
rebuild (concrete-compiler-internal-llvm-project submodule) is
structural and works; tablegen files renamed concrete→torus but the
generated .inc files in the source tree will regenerate at build
time
- backends/torus-cuda/implementation/ is an upstream submodule
pointer to the tfhe-rs source (not fetched in the staging clone);
the CUDA backend body is delivered out-of-tree
- ~100 test-fixture variable names like concrete_encoded_sample
retain "concrete" as a math term (vs symbolic); these are inside
tests/, not the public API; cleanup is a follow-up commit
- 295 Python `from concrete import ...` residuals in luxfhe/ml-sdk
consumer remain; that repo's import update is Phase 2B
This commit is the seed for the luxfhe/torus repo. Push as the first
commit to a fresh GitHub repo; do not re-import upstream Zama git
history.
238 lines
13 KiB
Plaintext
238 lines
13 KiB
Plaintext
security level: 112
|
|
target p_error: 2.9e-39
|
|
per precision and log norm2:
|
|
|
|
- 1: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 2, 9, 564, 2, 9, 4, 3, 38, 7.1e-40
|
|
- 1 : 2, 9, 565, 2, 9, 4, 3, 38, 5.2e-40
|
|
- 2 : 2, 9, 569, 2, 9, 4, 3, 38, 4.4e-40
|
|
- 3 : 3, 9, 601, 1, 21, 3, 4, 39, 3.7e-40
|
|
- 4 : 3, 9, 601, 1, 21, 3, 4, 39, 1.8e-39
|
|
- 5 : 3, 9, 604, 1, 21, 3, 4, 39, 1.3e-39
|
|
- 6 : 3, 9, 622, 1, 21, 3, 4, 40, 1.4e-39
|
|
- 7 : 4, 9, 611, 1, 23, 3, 4, 52, 2.4e-39
|
|
- 8 : 4, 9, 627, 1, 23, 3, 4, 53, 1.6e-39
|
|
- 9 : 3, 9, 574, 2, 14, 4, 3, 55, 1.2e-39
|
|
- 10: 3, 9, 574, 2, 14, 4, 3, 55, 2.1e-39
|
|
- 11: 3, 9, 575, 2, 14, 4, 3, 55, 1.8e-39
|
|
- 12: 3, 9, 579, 2, 14, 4, 3, 55, 2.5e-39
|
|
- 13: 3, 9, 623, 2, 14, 4, 3, 59, 2.8e-39
|
|
- 14: 3, 9, 575, 3, 11, 4, 3, 71, 1.8e-39
|
|
- 15: 3, 9, 579, 3, 11, 4, 3, 71, 2.6e-39
|
|
- 16: 3, 9, 593, 3, 11, 6, 2, 76, 2.6e-39
|
|
- 17: 3, 9, 581, 4, 9, 4, 3, 87, 2.5e-39
|
|
- 18: 4, 9, 584, 3, 12, 4, 3, 95, 1.0e-39
|
|
- 19: 4, 9, 593, 3, 12, 4, 3, 96, 2.4e-39
|
|
- 20: 4, 9, 585, 4, 10, 4, 3, 117, 5.0e-40
|
|
- 21: 4, 9, 598, 4, 10, 4, 3, 119, 1.2e-39
|
|
- 22: 4, 9, 564, 5, 8, 6, 2, 138, 3.8e-40
|
|
- 23: 4, 9, 582, 5, 8, 6, 2, 142, 2.6e-39
|
|
- 24: 4, 9, 590, 6, 7, 6, 2, 165, 2.9e-39
|
|
- 25: 4, 9, 603, 7, 6, 7, 2, 193, 2.2e-39
|
|
- 26: 4, 9, 569, 11, 4, 6, 2, 264, 1.2e-39
|
|
- 27: 4, 9, 595, 14, 3, 7, 2, 343, 2.0e-39
|
|
- 28: 4, 9, 590, 22, 2, 7, 2, 513, 2.9e-39
|
|
# no solution starting from log norm2 = 29
|
|
|
|
- 2: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 10, 602, 2, 9, 4, 3, 52, 2.9e-39
|
|
- 1 : 1, 10, 609, 2, 9, 4, 3, 52, 1.2e-39
|
|
- 2 : 2, 10, 649, 1, 23, 3, 4, 63, 1.8e-39
|
|
- 3 : 2, 10, 649, 1, 23, 3, 4, 63, 2.0e-39
|
|
- 4 : 2, 10, 650, 1, 23, 3, 4, 63, 6.2e-40
|
|
- 5 : 2, 10, 651, 1, 23, 3, 4, 63, 9.7e-40
|
|
- 6 : 2, 10, 657, 1, 23, 3, 4, 63, 8.9e-40
|
|
- 7 : 2, 10, 649, 1, 23, 5, 3, 68, 1.6e-39
|
|
- 8 : 2, 10, 623, 2, 15, 4, 3, 88, 6.8e-40
|
|
- 9 : 2, 10, 623, 2, 15, 4, 3, 88, 6.9e-40
|
|
- 10: 2, 10, 623, 2, 15, 4, 3, 88, 7.6e-40
|
|
- 11: 2, 10, 623, 2, 15, 4, 3, 88, 1.1e-39
|
|
- 12: 2, 10, 624, 2, 15, 4, 3, 89, 9.7e-40
|
|
- 13: 2, 10, 628, 2, 15, 4, 3, 89, 1.1e-39
|
|
- 14: 2, 10, 638, 2, 15, 5, 3, 93, 1.7e-39
|
|
- 15: 2, 10, 623, 3, 12, 4, 3, 114, 1.6e-39
|
|
- 16: 2, 10, 625, 3, 12, 4, 3, 114, 7.9e-40
|
|
- 17: 2, 10, 632, 3, 12, 4, 3, 116, 2.1e-39
|
|
- 18: 2, 10, 624, 4, 9, 4, 3, 140, 1.7e-39
|
|
- 19: 2, 10, 629, 4, 9, 4, 3, 141, 2.8e-39
|
|
- 20: 2, 10, 623, 4, 9, 7, 2, 147, 2.3e-39
|
|
- 21: 2, 10, 607, 5, 8, 7, 2, 168, 7.6e-40
|
|
- 22: 2, 10, 609, 6, 7, 7, 2, 194, 2.4e-39
|
|
- 23: 2, 10, 613, 7, 6, 7, 2, 220, 1.4e-39
|
|
- 24: 2, 10, 621, 9, 5, 7, 2, 274, 2.7e-39
|
|
- 25: 2, 10, 639, 11, 4, 7, 2, 334, 2.3e-39
|
|
- 26: 2, 10, 633, 21, 2, 7, 2, 590, 2.0e-39
|
|
- 27: 2, 10, 633, 45, 1, 14, 1, 1231, 2.4e-39
|
|
# no solution starting from log norm2 = 28
|
|
|
|
- 3: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 11, 654, 1, 23, 5, 3, 87, 3.0e-40
|
|
- 1 : 1, 11, 654, 1, 23, 5, 3, 87, 3.1e-40
|
|
- 2 : 1, 11, 654, 1, 23, 5, 3, 87, 3.9e-40
|
|
- 3 : 1, 11, 654, 1, 23, 5, 3, 87, 9.7e-40
|
|
- 4 : 1, 11, 656, 1, 23, 5, 3, 87, 3.3e-40
|
|
- 5 : 1, 11, 663, 1, 23, 5, 3, 88, 9.0e-40
|
|
- 6 : 1, 11, 654, 2, 15, 5, 3, 122, 2.9e-40
|
|
- 7 : 1, 11, 654, 2, 15, 5, 3, 122, 2.9e-40
|
|
- 8 : 1, 11, 654, 2, 15, 5, 3, 122, 3.1e-40
|
|
- 9 : 1, 11, 654, 2, 15, 5, 3, 122, 3.6e-40
|
|
- 10: 1, 11, 654, 2, 15, 5, 3, 122, 6.5e-40
|
|
- 11: 1, 11, 655, 2, 15, 5, 3, 123, 6.6e-40
|
|
- 12: 1, 11, 659, 2, 15, 5, 3, 123, 1.8e-39
|
|
- 13: 1, 11, 680, 2, 15, 8, 2, 135, 2.4e-39
|
|
- 14: 1, 11, 632, 3, 11, 7, 2, 158, 2.1e-39
|
|
- 15: 1, 11, 635, 3, 11, 7, 2, 159, 1.8e-39
|
|
- 16: 1, 11, 675, 3, 11, 5, 3, 163, 2.6e-39
|
|
- 17: 1, 11, 633, 4, 9, 7, 2, 193, 2.7e-39
|
|
- 18: 1, 11, 641, 4, 9, 7, 2, 195, 1.1e-39
|
|
- 19: 1, 11, 639, 5, 8, 7, 2, 230, 1.4e-39
|
|
- 20: 1, 11, 641, 6, 7, 7, 2, 265, 1.1e-39
|
|
- 21: 1, 11, 643, 7, 6, 7, 2, 301, 1.4e-39
|
|
- 22: 1, 11, 651, 8, 5, 7, 2, 341, 1.2e-39
|
|
- 23: 1, 11, 654, 11, 4, 7, 2, 450, 2.1e-39
|
|
- 24: 1, 11, 680, 14, 3, 8, 2, 581, 2.6e-39
|
|
- 25: 1, 11, 647, 43, 1, 15, 1, 1597, 2.0e-39
|
|
# no solution starting from log norm2 = 26
|
|
|
|
- 4: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 12, 709, 1, 22, 5, 3, 198, 4.0e-40
|
|
- 1 : 1, 12, 709, 1, 22, 5, 3, 198, 9.0e-40
|
|
- 2 : 1, 12, 711, 1, 22, 5, 3, 199, 5.1e-40
|
|
- 3 : 1, 12, 719, 1, 22, 5, 3, 201, 1.1e-39
|
|
- 4 : 1, 12, 708, 2, 15, 5, 3, 281, 2.3e-39
|
|
- 5 : 1, 12, 708, 2, 15, 5, 3, 281, 2.4e-39
|
|
- 6 : 1, 12, 708, 2, 15, 5, 3, 281, 2.4e-39
|
|
- 7 : 1, 12, 708, 2, 15, 5, 3, 281, 2.7e-39
|
|
- 8 : 1, 12, 709, 2, 15, 5, 3, 281, 5.9e-40
|
|
- 9 : 1, 12, 710, 2, 15, 5, 3, 282, 5.9e-40
|
|
- 10: 1, 12, 714, 2, 15, 5, 3, 283, 1.3e-39
|
|
- 11: 1, 12, 740, 2, 15, 6, 3, 299, 2.1e-39
|
|
- 12: 1, 12, 709, 3, 11, 5, 3, 365, 1.4e-39
|
|
- 13: 1, 12, 711, 3, 11, 5, 3, 366, 2.8e-39
|
|
- 14: 1, 12, 725, 3, 11, 5, 3, 372, 1.5e-39
|
|
- 15: 1, 12, 711, 4, 9, 5, 3, 449, 5.1e-40
|
|
- 16: 1, 12, 719, 4, 9, 5, 3, 454, 1.1e-39
|
|
- 17: 1, 12, 693, 5, 8, 8, 2, 535, 1.2e-39
|
|
- 18: 1, 12, 695, 6, 7, 8, 2, 618, 1.4e-39
|
|
- 19: 1, 12, 697, 7, 6, 8, 2, 702, 2.4e-39
|
|
- 20: 1, 12, 703, 8, 5, 8, 2, 790, 1.5e-39
|
|
- 21: 1, 12, 729, 10, 4, 9, 2, 995, 2.7e-39
|
|
- 22: 1, 12, 748, 14, 3, 9, 2, 1371, 2.8e-39
|
|
- 23: 1, 12, 703, 43, 1, 16, 1, 3717, 2.0e-39
|
|
# no solution starting from log norm2 = 24
|
|
|
|
- 5: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 13, 795, 1, 22, 4, 4, 454, 2.1e-39
|
|
- 1 : 1, 13, 802, 1, 22, 4, 4, 458, 2.9e-39
|
|
- 2 : 1, 13, 804, 1, 22, 6, 3, 484, 2.4e-39
|
|
- 3 : 1, 13, 760, 2, 15, 6, 3, 649, 1.0e-39
|
|
- 4 : 1, 13, 760, 2, 15, 6, 3, 649, 1.0e-39
|
|
- 5 : 1, 13, 760, 2, 15, 6, 3, 649, 1.1e-39
|
|
- 6 : 1, 13, 760, 2, 15, 6, 3, 649, 1.8e-39
|
|
- 7 : 1, 13, 761, 2, 15, 6, 3, 650, 1.0e-39
|
|
- 8 : 1, 13, 764, 2, 15, 6, 3, 652, 2.1e-39
|
|
- 9 : 1, 13, 787, 2, 15, 6, 3, 671, 2.9e-39
|
|
- 10: 1, 13, 761, 3, 11, 6, 3, 840, 3.2e-40
|
|
- 11: 1, 13, 762, 3, 11, 6, 3, 841, 1.2e-39
|
|
- 12: 1, 13, 770, 3, 11, 6, 3, 850, 8.4e-40
|
|
- 13: 1, 13, 762, 4, 9, 6, 3, 1032, 7.6e-40
|
|
- 14: 1, 13, 769, 4, 9, 6, 3, 1041, 6.1e-40
|
|
- 15: 1, 13, 747, 5, 8, 9, 2, 1234, 2.0e-39
|
|
- 16: 1, 13, 750, 6, 7, 9, 2, 1426, 8.9e-40
|
|
- 17: 1, 13, 752, 7, 6, 9, 2, 1618, 2.5e-39
|
|
- 18: 1, 13, 757, 8, 5, 9, 2, 1818, 2.0e-39
|
|
- 19: 1, 13, 777, 10, 4, 9, 2, 2253, 2.0e-39
|
|
- 20: 1, 13, 749, 21, 2, 9, 2, 4233, 1.5e-39
|
|
- 21: 1, 13, 769, 42, 1, 18, 1, 8491, 2.6e-39
|
|
# no solution starting from log norm2 = 22
|
|
|
|
- 6: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 14, 863, 1, 22, 5, 4, 1062, 2.3e-39
|
|
- 1 : 1, 14, 815, 2, 15, 6, 3, 1465, 1.8e-39
|
|
- 2 : 1, 14, 815, 2, 15, 6, 3, 1465, 1.8e-39
|
|
- 3 : 1, 14, 815, 2, 15, 6, 3, 1465, 2.0e-39
|
|
- 4 : 1, 14, 816, 2, 15, 6, 3, 1466, 4.8e-40
|
|
- 5 : 1, 14, 816, 2, 15, 6, 3, 1466, 2.5e-39
|
|
- 6 : 1, 14, 820, 2, 15, 6, 3, 1473, 2.7e-39
|
|
- 7 : 1, 14, 869, 2, 15, 5, 4, 1530, 2.8e-39
|
|
- 8 : 1, 14, 816, 3, 11, 6, 3, 1900, 7.4e-40
|
|
- 9 : 1, 14, 817, 3, 11, 6, 3, 1902, 2.4e-39
|
|
- 10: 1, 14, 826, 3, 11, 6, 3, 1922, 1.0e-39
|
|
- 11: 1, 14, 818, 4, 9, 6, 3, 2339, 5.8e-40
|
|
- 12: 1, 14, 826, 4, 9, 6, 3, 2361, 2.8e-39
|
|
- 13: 1, 14, 806, 5, 8, 9, 2, 2809, 2.5e-39
|
|
- 14: 1, 14, 808, 6, 6, 9, 2, 3245, 2.1e-39
|
|
- 15: 1, 14, 808, 7, 6, 10, 2, 3700, 1.3e-39
|
|
- 16: 1, 14, 813, 8, 5, 10, 2, 4154, 1.3e-39
|
|
- 17: 1, 14, 830, 10, 4, 10, 2, 5122, 2.9e-39
|
|
- 18: 1, 14, 816, 20, 2, 10, 2, 9371, 2.0e-39
|
|
- 19: 1, 14, 824, 42, 1, 20, 1, 19351, 2.4e-39
|
|
# no solution starting from log norm2 = 20
|
|
|
|
- 7: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 15, 893, 2, 15, 5, 4, 3309, 1.0e-39
|
|
- 1 : 1, 15, 893, 2, 15, 5, 4, 3309, 1.2e-39
|
|
- 2 : 1, 15, 893, 2, 15, 5, 4, 3309, 1.8e-39
|
|
- 3 : 1, 15, 894, 2, 15, 5, 4, 3313, 1.5e-39
|
|
- 4 : 1, 15, 898, 2, 15, 5, 4, 3327, 1.7e-39
|
|
- 5 : 1, 15, 896, 2, 15, 7, 3, 3432, 2.0e-39
|
|
- 6 : 1, 15, 866, 3, 11, 7, 3, 4296, 2.1e-39
|
|
- 7 : 1, 15, 868, 3, 11, 7, 3, 4305, 5.7e-40
|
|
- 8 : 1, 15, 874, 3, 11, 7, 3, 4334, 1.2e-39
|
|
- 9 : 1, 15, 868, 4, 9, 7, 3, 5282, 1.1e-39
|
|
- 10: 1, 15, 876, 4, 9, 7, 3, 5329, 1.0e-39
|
|
- 11: 1, 15, 873, 5, 7, 7, 3, 6294, 1.9e-39
|
|
- 12: 1, 15, 853, 6, 6, 10, 2, 7272, 1.1e-39
|
|
- 13: 1, 15, 866, 7, 6, 10, 2, 8355, 2.7e-39
|
|
- 14: 1, 15, 874, 8, 5, 10, 2, 9415, 1.8e-39
|
|
- 15: 1, 15, 891, 10, 4, 11, 2, 11656, 2.4e-39
|
|
- 16: 1, 15, 866, 20, 2, 10, 2, 21021, 2.6e-39
|
|
- 17: 1, 15, 887, 42, 1, 22, 1, 44147, 2.6e-39
|
|
# no solution starting from log norm2 = 18
|
|
|
|
- 8: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 16, 922, 2, 14, 7, 3, 7402, 8.9e-40
|
|
- 1 : 1, 16, 923, 2, 14, 7, 3, 7410, 6.1e-40
|
|
- 2 : 1, 16, 926, 2, 14, 7, 3, 7433, 1.1e-39
|
|
- 3 : 1, 16, 948, 2, 14, 7, 3, 7604, 2.3e-39
|
|
- 4 : 1, 16, 922, 3, 11, 7, 3, 9592, 1.5e-39
|
|
- 5 : 1, 16, 924, 3, 11, 7, 3, 9612, 9.1e-40
|
|
- 6 : 1, 16, 932, 3, 11, 7, 3, 9693, 1.8e-39
|
|
- 7 : 1, 16, 924, 4, 9, 7, 3, 11807, 2.3e-39
|
|
- 8 : 1, 16, 936, 4, 9, 7, 3, 11957, 1.4e-39
|
|
- 9 : 1, 16, 928, 5, 7, 7, 3, 14061, 2.1e-39
|
|
- 10: 1, 16, 962, 5, 7, 8, 3, 14687, 2.7e-39
|
|
- 11: 1, 16, 955, 6, 6, 12, 2, 17328, 2.7e-39
|
|
- 12: 1, 16, 929, 8, 5, 11, 2, 21160, 2.0e-39
|
|
- 13: 1, 16, 952, 10, 4, 23, 1, 27630, 2.9e-39
|
|
- 14: 1, 16, 915, 20, 2, 11, 2, 46923, 2.2e-39
|
|
# no solution starting from log norm2 = 15
|
|
|
|
- 9: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 17, 1001, 2, 14, 6, 4, 16530, 5.3e-40
|
|
- 1 : 1, 17, 1011, 2, 14, 6, 4, 16690, 1.4e-39
|
|
- 2 : 1, 17, 972, 3, 11, 8, 3, 21412, 9.4e-40
|
|
- 3 : 1, 17, 973, 3, 11, 8, 3, 21434, 2.3e-39
|
|
- 4 : 1, 17, 980, 3, 11, 8, 3, 21584, 2.2e-39
|
|
- 5 : 1, 17, 974, 4, 9, 8, 3, 26325, 1.1e-39
|
|
- 6 : 1, 17, 984, 4, 9, 8, 3, 26590, 1.2e-39
|
|
- 7 : 1, 17, 976, 5, 7, 8, 3, 31258, 1.2e-39
|
|
- 8 : 1, 17, 1001, 5, 7, 8, 3, 32046, 2.5e-39
|
|
- 9 : 1, 17, 1014, 6, 6, 8, 3, 37525, 2.3e-39
|
|
- 10: 1, 17, 987, 8, 5, 12, 2, 47398, 2.8e-39
|
|
- 11: 1, 17, 960, 13, 3, 12, 2, 70116, 1.6e-39
|
|
- 12: 1, 17, 967, 20, 2, 12, 2, 104468, 2.8e-39
|
|
# no solution starting from log norm2 = 13
|
|
|
|
- 10: # bits
|
|
# no solution at all
|