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.
241 lines
13 KiB
Plaintext
241 lines
13 KiB
Plaintext
security level: 80
|
|
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 : 4, 8, 512, 1, 19, 2, 6, 20, 5.1e-41
|
|
- 1 : 4, 8, 512, 1, 19, 2, 6, 20, 6.1e-41
|
|
- 2 : 4, 8, 512, 1, 19, 2, 6, 20, 1.3e-40
|
|
- 3 : 4, 8, 512, 1, 19, 2, 6, 20, 2.0e-39
|
|
- 4 : 2, 9, 512, 1, 19, 2, 6, 23, 4.8e-84
|
|
- 5 : 2, 9, 512, 1, 19, 2, 6, 23, 4.9e-40
|
|
- 6 : 5, 8, 512, 1, 24, 2, 6, 25, 3.7e-40
|
|
- 7 : 5, 8, 512, 1, 24, 3, 5, 26, 1.8e-41
|
|
- 8 : 4, 8, 512, 2, 13, 2, 6, 29, 1.0e-40
|
|
- 9 : 4, 8, 512, 2, 13, 2, 6, 29, 1.0e-39
|
|
- 10: 2, 9, 512, 2, 13, 2, 6, 33, 4.3e-88
|
|
- 11: 2, 9, 512, 2, 13, 2, 6, 33, 1.0e-43
|
|
- 12: 5, 8, 512, 2, 16, 2, 6, 36, 1.9e-40
|
|
- 13: 5, 8, 512, 2, 16, 2, 6, 36, 2.5e-40
|
|
- 14: 5, 8, 512, 2, 16, 2, 6, 36, 6.3e-40
|
|
- 15: 5, 8, 512, 2, 16, 3, 5, 38, 1.7e-40
|
|
- 16: 3, 9, 512, 2, 16, 2, 6, 47, 1.4e-48
|
|
- 17: 5, 8, 512, 3, 12, 2, 6, 48, 2.8e-40
|
|
- 18: 5, 8, 512, 3, 12, 2, 6, 48, 1.1e-39
|
|
- 19: 5, 8, 512, 3, 12, 3, 5, 49, 1.4e-39
|
|
- 20: 5, 8, 512, 4, 10, 2, 6, 59, 1.5e-39
|
|
- 21: 5, 8, 512, 4, 10, 4, 4, 61, 2.4e-39
|
|
- 22: 5, 8, 512, 5, 8, 3, 5, 71, 1.7e-41
|
|
- 23: 5, 8, 512, 6, 7, 3, 5, 83, 2.6e-41
|
|
- 24: 5, 8, 512, 7, 6, 3, 5, 94, 5.3e-41
|
|
- 25: 5, 8, 512, 9, 5, 3, 5, 116, 1.3e-40
|
|
- 26: 5, 8, 512, 11, 4, 3, 5, 139, 4.6e-40
|
|
- 27: 3, 9, 512, 11, 4, 2, 6, 173, 9.6e-42
|
|
- 28: 3, 9, 512, 22, 2, 2, 6, 327, 1.5e-58
|
|
- 29: 3, 9, 512, 45, 1, 2, 6, 649, 6.9e-40
|
|
# no solution starting from log norm2 = 30
|
|
|
|
- 2: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 2, 9, 512, 1, 19, 3, 5, 24, 2.0e-41
|
|
- 1 : 2, 9, 512, 1, 19, 3, 5, 24, 4.3e-41
|
|
- 2 : 2, 9, 512, 1, 19, 3, 5, 24, 8.7e-40
|
|
- 3 : 1, 10, 512, 1, 19, 2, 6, 30, 6.3e-60
|
|
- 4 : 2, 9, 512, 2, 13, 3, 5, 34, 1.5e-41
|
|
- 5 : 2, 9, 512, 2, 13, 3, 5, 34, 1.6e-41
|
|
- 6 : 2, 9, 512, 2, 13, 3, 5, 34, 1.9e-41
|
|
- 7 : 2, 9, 512, 2, 13, 3, 5, 34, 3.8e-41
|
|
- 8 : 2, 9, 512, 2, 13, 3, 5, 34, 5.4e-40
|
|
- 9 : 1, 10, 512, 2, 13, 2, 6, 43, 5.7e-60
|
|
- 10: 2, 9, 512, 3, 10, 3, 5, 43, 4.9e-41
|
|
- 11: 2, 9, 512, 3, 10, 3, 5, 43, 1.4e-39
|
|
- 12: 3, 9, 512, 2, 16, 3, 5, 48, 2.5e-40
|
|
- 13: 3, 9, 512, 2, 16, 3, 5, 48, 1.9e-39
|
|
- 14: 3, 9, 512, 3, 12, 3, 5, 62, 1.3e-40
|
|
- 15: 3, 9, 512, 3, 12, 3, 5, 62, 1.6e-40
|
|
- 16: 3, 9, 512, 3, 12, 3, 5, 62, 3.4e-40
|
|
- 17: 3, 9, 512, 3, 12, 4, 4, 64, 1.3e-40
|
|
- 18: 3, 9, 512, 4, 9, 3, 5, 76, 4.4e-40
|
|
- 19: 3, 9, 512, 4, 9, 4, 4, 78, 3.7e-40
|
|
- 20: 3, 9, 512, 5, 8, 3, 5, 90, 6.4e-40
|
|
- 21: 3, 9, 512, 5, 8, 4, 4, 92, 1.6e-39
|
|
- 22: 3, 9, 512, 6, 7, 5, 3, 107, 1.6e-39
|
|
- 23: 3, 9, 512, 8, 5, 4, 4, 134, 1.3e-39
|
|
- 24: 3, 9, 515, 11, 4, 3, 5, 175, 2.8e-39
|
|
- 25: 3, 9, 512, 14, 3, 5, 3, 219, 2.7e-39
|
|
- 26: 3, 9, 512, 22, 2, 5, 3, 331, 2.0e-39
|
|
- 27: 2, 10, 512, 43, 1, 3, 5, 933, 1.2e-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, 10, 512, 1, 19, 4, 4, 32, 1.9e-40
|
|
- 1 : 1, 10, 521, 1, 19, 4, 4, 32, 2.9e-39
|
|
- 2 : 1, 10, 512, 2, 13, 4, 4, 45, 6.0e-41
|
|
- 3 : 1, 10, 512, 2, 13, 4, 4, 45, 6.1e-41
|
|
- 4 : 1, 10, 512, 2, 13, 4, 4, 45, 6.4e-41
|
|
- 5 : 1, 10, 512, 2, 13, 4, 4, 45, 8.0e-41
|
|
- 6 : 1, 10, 512, 2, 13, 4, 4, 45, 1.9e-40
|
|
- 7 : 1, 10, 520, 2, 13, 4, 4, 45, 2.9e-39
|
|
- 8 : 1, 10, 512, 3, 10, 4, 4, 58, 8.7e-41
|
|
- 9 : 1, 10, 512, 3, 10, 4, 4, 58, 2.7e-40
|
|
- 10: 1, 10, 512, 3, 10, 5, 3, 59, 1.0e-39
|
|
- 11: 1, 10, 512, 4, 8, 4, 4, 71, 4.3e-40
|
|
- 12: 1, 10, 512, 4, 8, 8, 2, 75, 1.7e-39
|
|
- 13: 1, 11, 514, 2, 15, 3, 5, 94, 1.5e-39
|
|
- 14: 2, 10, 519, 3, 12, 4, 4, 96, 2.7e-39
|
|
- 15: 2, 10, 512, 3, 12, 5, 3, 97, 5.6e-40
|
|
- 16: 2, 10, 518, 4, 9, 4, 4, 117, 2.8e-39
|
|
- 17: 2, 10, 512, 4, 9, 5, 3, 118, 2.7e-40
|
|
- 18: 2, 10, 512, 5, 8, 5, 3, 139, 9.8e-41
|
|
- 19: 2, 10, 512, 5, 8, 6, 3, 141, 2.0e-39
|
|
- 20: 2, 10, 512, 6, 7, 8, 2, 166, 5.6e-40
|
|
- 21: 2, 10, 512, 7, 6, 8, 2, 187, 1.5e-39
|
|
- 22: 2, 10, 512, 10, 4, 9, 2, 252, 2.7e-39
|
|
- 23: 1, 11, 512, 10, 4, 4, 4, 320, 4.7e-46
|
|
- 24: 1, 11, 514, 14, 3, 3, 5, 431, 1.6e-39
|
|
- 25: 1, 11, 512, 22, 2, 4, 4, 656, 2.9e-40
|
|
# 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, 11, 528, 1, 23, 6, 3, 74, 2.7e-39
|
|
- 1 : 1, 11, 529, 1, 23, 6, 3, 74, 2.7e-39
|
|
- 2 : 1, 11, 534, 1, 23, 6, 3, 74, 2.8e-39
|
|
- 3 : 1, 11, 523, 1, 23, 9, 2, 79, 2.9e-39
|
|
- 4 : 1, 11, 528, 2, 15, 6, 3, 102, 2.5e-39
|
|
- 5 : 1, 11, 528, 2, 15, 6, 3, 102, 2.5e-39
|
|
- 6 : 1, 11, 528, 2, 15, 6, 3, 102, 2.5e-39
|
|
- 7 : 1, 11, 528, 2, 15, 6, 3, 102, 2.6e-39
|
|
- 8 : 1, 11, 529, 2, 15, 6, 3, 103, 2.5e-39
|
|
- 9 : 1, 11, 531, 2, 15, 6, 3, 103, 2.9e-39
|
|
- 10: 1, 11, 515, 2, 15, 8, 2, 104, 2.8e-39
|
|
- 11: 1, 11, 528, 3, 11, 6, 3, 131, 2.8e-39
|
|
- 12: 1, 11, 512, 3, 11, 8, 2, 132, 5.3e-40
|
|
- 13: 1, 11, 512, 3, 11, 8, 2, 132, 1.9e-39
|
|
- 14: 1, 11, 512, 4, 9, 8, 2, 160, 4.3e-40
|
|
- 15: 1, 11, 512, 4, 9, 8, 2, 160, 8.8e-40
|
|
- 16: 1, 11, 523, 4, 9, 9, 2, 165, 2.9e-39
|
|
- 17: 1, 11, 516, 5, 8, 9, 2, 191, 2.7e-39
|
|
- 18: 1, 11, 524, 6, 7, 9, 2, 222, 2.9e-39
|
|
- 19: 1, 11, 512, 7, 6, 17, 1, 262, 2.1e-39
|
|
- 20: 1, 11, 514, 10, 4, 9, 2, 331, 2.5e-39
|
|
- 21: 1, 11, 512, 14, 3, 9, 2, 442, 2.6e-39
|
|
- 22: 1, 11, 512, 21, 2, 17, 1, 654, 2.4e-39
|
|
- 23: 1, 12, 513, 22, 2, 8, 2, 1422, 2.8e-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, 560, 1, 22, 4, 4, 329, 7.0e-40
|
|
- 1 : 1, 13, 563, 1, 22, 4, 4, 331, 4.3e-40
|
|
- 2 : 1, 13, 548, 1, 22, 6, 3, 340, 7.1e-40
|
|
- 3 : 1, 13, 536, 2, 15, 6, 3, 467, 2.8e-40
|
|
- 4 : 1, 13, 536, 2, 15, 6, 3, 467, 2.9e-40
|
|
- 5 : 1, 13, 536, 2, 15, 6, 3, 467, 3.1e-40
|
|
- 6 : 1, 13, 536, 2, 15, 6, 3, 467, 4.2e-40
|
|
- 7 : 1, 13, 536, 2, 15, 6, 3, 467, 1.4e-39
|
|
- 8 : 1, 13, 538, 2, 15, 6, 3, 469, 2.3e-40
|
|
- 9 : 1, 13, 545, 2, 15, 6, 3, 474, 1.2e-39
|
|
- 10: 1, 13, 536, 3, 11, 6, 3, 601, 6.4e-40
|
|
- 11: 1, 13, 537, 3, 11, 6, 3, 602, 2.3e-40
|
|
- 12: 1, 13, 540, 3, 11, 6, 3, 605, 4.1e-40
|
|
- 13: 1, 13, 570, 3, 11, 6, 3, 637, 2.1e-39
|
|
- 14: 1, 13, 539, 4, 9, 6, 3, 739, 2.0e-39
|
|
- 15: 1, 13, 561, 4, 9, 6, 3, 768, 1.5e-39
|
|
- 16: 1, 13, 550, 5, 8, 9, 2, 917, 2.0e-39
|
|
- 17: 1, 13, 525, 7, 6, 9, 2, 1139, 2.0e-39
|
|
- 18: 1, 13, 527, 8, 5, 9, 2, 1275, 6.0e-40
|
|
- 19: 1, 13, 531, 10, 4, 9, 2, 1550, 1.1e-39
|
|
- 20: 1, 13, 535, 14, 3, 9, 2, 2096, 1.0e-39
|
|
- 21: 1, 13, 565, 22, 2, 10, 2, 3351, 2.9e-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, 585, 1, 22, 6, 3, 758, 2.1e-39
|
|
- 1 : 1, 14, 576, 2, 15, 6, 3, 1054, 4.7e-40
|
|
- 2 : 1, 14, 576, 2, 15, 6, 3, 1054, 4.8e-40
|
|
- 3 : 1, 14, 576, 2, 15, 6, 3, 1054, 5.2e-40
|
|
- 4 : 1, 14, 576, 2, 15, 6, 3, 1054, 7.0e-40
|
|
- 5 : 1, 14, 576, 2, 15, 6, 3, 1054, 2.3e-39
|
|
- 6 : 1, 14, 578, 2, 15, 6, 3, 1057, 8.8e-40
|
|
- 7 : 1, 14, 587, 2, 15, 6, 3, 1073, 1.3e-39
|
|
- 8 : 1, 14, 576, 3, 11, 6, 3, 1360, 9.5e-40
|
|
- 9 : 1, 14, 577, 3, 11, 6, 3, 1362, 4.1e-40
|
|
- 10: 1, 14, 580, 3, 11, 6, 3, 1369, 7.7e-40
|
|
- 11: 1, 14, 598, 3, 11, 7, 3, 1428, 2.4e-39
|
|
- 12: 1, 14, 580, 4, 9, 6, 3, 1677, 1.6e-39
|
|
- 13: 1, 14, 602, 4, 9, 7, 3, 1757, 1.8e-39
|
|
- 14: 1, 14, 601, 5, 8, 10, 2, 2130, 2.9e-39
|
|
- 15: 1, 14, 567, 7, 6, 9, 2, 2598, 1.9e-39
|
|
- 16: 1, 14, 569, 8, 5, 9, 2, 2909, 1.4e-39
|
|
- 17: 1, 14, 570, 10, 4, 10, 2, 3537, 1.5e-39
|
|
- 18: 1, 14, 576, 14, 3, 10, 2, 4798, 1.2e-39
|
|
- 19: 1, 14, 568, 41, 1, 19, 1, 13040, 2.5e-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, 633, 2, 15, 5, 4, 2383, 1.1e-39
|
|
- 1 : 1, 15, 633, 2, 15, 5, 4, 2383, 1.2e-39
|
|
- 2 : 1, 15, 633, 2, 15, 5, 4, 2383, 1.6e-39
|
|
- 3 : 1, 15, 634, 2, 15, 5, 4, 2387, 2.4e-40
|
|
- 4 : 1, 15, 635, 2, 15, 5, 4, 2390, 1.7e-39
|
|
- 5 : 1, 15, 644, 2, 15, 5, 4, 2422, 1.5e-39
|
|
- 6 : 1, 15, 614, 3, 11, 7, 3, 3083, 2.3e-40
|
|
- 7 : 1, 15, 614, 3, 11, 7, 3, 3083, 1.7e-39
|
|
- 8 : 1, 15, 617, 3, 11, 7, 3, 3097, 4.4e-40
|
|
- 9 : 1, 15, 635, 3, 11, 7, 3, 3184, 1.2e-39
|
|
- 10: 1, 15, 617, 4, 9, 7, 3, 3792, 2.9e-39
|
|
- 11: 1, 15, 646, 4, 9, 7, 3, 3964, 2.0e-39
|
|
- 12: 1, 15, 632, 5, 7, 7, 3, 4592, 1.1e-39
|
|
- 13: 1, 15, 634, 6, 6, 7, 3, 5319, 2.9e-39
|
|
- 14: 1, 15, 607, 8, 5, 10, 2, 6578, 8.5e-40
|
|
- 15: 1, 15, 611, 10, 4, 10, 2, 7995, 1.2e-39
|
|
- 16: 1, 15, 617, 14, 3, 11, 2, 10887, 2.8e-39
|
|
- 17: 1, 15, 605, 41, 1, 21, 1, 29434, 1.7e-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, 654, 2, 14, 7, 3, 5325, 5.0e-40
|
|
- 1 : 1, 16, 654, 2, 14, 7, 3, 5325, 1.2e-39
|
|
- 2 : 1, 16, 655, 2, 14, 7, 3, 5333, 2.7e-39
|
|
- 3 : 1, 16, 662, 2, 14, 7, 3, 5387, 1.1e-39
|
|
- 4 : 1, 16, 654, 3, 11, 7, 3, 6879, 7.1e-40
|
|
- 5 : 1, 16, 655, 3, 11, 7, 3, 6889, 3.1e-40
|
|
- 6 : 1, 16, 658, 3, 11, 7, 3, 6919, 4.8e-40
|
|
- 7 : 1, 16, 674, 3, 11, 8, 3, 7165, 1.6e-39
|
|
- 8 : 1, 16, 659, 4, 9, 7, 3, 8494, 7.5e-40
|
|
- 9 : 1, 16, 693, 4, 9, 8, 3, 9006, 2.5e-39
|
|
- 10: 1, 16, 668, 5, 7, 7, 3, 10193, 2.4e-39
|
|
- 11: 1, 16, 649, 6, 6, 11, 2, 11777, 2.1e-39
|
|
- 12: 1, 16, 646, 8, 5, 11, 2, 14793, 8.0e-40
|
|
- 13: 1, 16, 650, 10, 4, 11, 2, 17970, 1.1e-39
|
|
- 14: 1, 16, 679, 13, 3, 12, 2, 23683, 2.7e-39
|
|
- 15: 1, 16, 660, 40, 1, 12, 2, 65350, 1.3e-39
|
|
# no solution starting from log norm2 = 16
|
|
|
|
- 9: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 17, 711, 2, 14, 6, 4, 11890, 2.5e-39
|
|
- 1 : 1, 17, 715, 2, 14, 6, 4, 11954, 1.2e-39
|
|
- 2 : 1, 17, 724, 2, 14, 13, 2, 13367, 2.7e-39
|
|
- 3 : 1, 17, 692, 3, 11, 8, 3, 15392, 3.0e-40
|
|
- 4 : 1, 17, 694, 3, 11, 8, 3, 15435, 2.4e-39
|
|
- 5 : 1, 17, 714, 3, 11, 8, 3, 15865, 2.8e-39
|
|
- 6 : 1, 17, 696, 4, 9, 8, 3, 18958, 3.0e-40
|
|
- 7 : 1, 17, 731, 4, 9, 13, 2, 20802, 2.9e-39
|
|
- 8 : 1, 17, 700, 5, 7, 8, 3, 22564, 1.2e-39
|
|
- 9 : 1, 17, 702, 6, 6, 8, 3, 26137, 9.9e-40
|
|
- 10: 1, 17, 685, 8, 5, 12, 2, 33053, 2.1e-39
|
|
- 11: 1, 17, 690, 10, 4, 12, 2, 40191, 9.5e-40
|
|
- 12: 1, 17, 711, 13, 3, 12, 2, 52063, 2.8e-39
|
|
- 13: 1, 17, 695, 40, 1, 12, 2, 144728, 1.6e-39
|
|
# no solution starting from log norm2 = 14
|
|
|
|
- 10: # bits
|
|
# no solution at all
|