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.
235 lines
13 KiB
Plaintext
235 lines
13 KiB
Plaintext
security level: 128
|
|
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, 666, 2, 8, 4, 3, 44, 2.1e-39
|
|
- 1 : 3, 9, 689, 1, 18, 3, 4, 44, 1.5e-39
|
|
- 2 : 3, 9, 692, 1, 18, 3, 4, 44, 9.6e-40
|
|
- 3 : 3, 9, 707, 1, 18, 3, 4, 45, 2.8e-39
|
|
- 4 : 4, 9, 697, 1, 23, 3, 4, 58, 9.4e-40
|
|
- 5 : 4, 9, 697, 1, 23, 3, 4, 58, 1.4e-39
|
|
- 6 : 4, 9, 698, 1, 23, 3, 4, 58, 1.1e-39
|
|
- 7 : 4, 9, 702, 1, 23, 3, 4, 59, 6.9e-40
|
|
- 8 : 4, 9, 727, 1, 23, 3, 4, 60, 2.8e-39
|
|
- 9 : 3, 9, 685, 2, 12, 4, 3, 64, 1.7e-39
|
|
- 10: 3, 9, 660, 3, 9, 4, 3, 80, 8.2e-40
|
|
- 11: 3, 9, 664, 3, 9, 4, 3, 81, 1.4e-39
|
|
- 12: 4, 9, 667, 2, 16, 4, 3, 83, 1.9e-39
|
|
- 13: 4, 9, 668, 2, 16, 4, 3, 83, 5.8e-40
|
|
- 14: 4, 9, 669, 2, 16, 4, 3, 83, 2.4e-39
|
|
- 15: 4, 9, 678, 2, 16, 4, 3, 84, 1.0e-39
|
|
- 16: 4, 9, 667, 3, 12, 4, 3, 108, 2.1e-39
|
|
- 17: 4, 9, 668, 3, 12, 4, 3, 108, 9.7e-40
|
|
- 18: 4, 9, 670, 3, 12, 4, 3, 108, 2.9e-39
|
|
- 19: 4, 9, 685, 3, 12, 4, 3, 110, 1.3e-39
|
|
- 20: 4, 9, 671, 4, 10, 4, 3, 133, 2.5e-39
|
|
- 21: 4, 9, 692, 4, 10, 4, 3, 137, 2.8e-39
|
|
- 22: 4, 9, 648, 5, 8, 6, 2, 157, 9.3e-40
|
|
- 23: 4, 9, 682, 5, 8, 6, 2, 165, 2.2e-39
|
|
- 24: 4, 9, 695, 6, 7, 7, 2, 196, 2.7e-39
|
|
- 25: 4, 9, 681, 8, 5, 6, 2, 240, 2.4e-39
|
|
- 26: 4, 9, 656, 11, 4, 6, 2, 303, 1.5e-39
|
|
- 27: 4, 9, 664, 15, 3, 6, 2, 404, 1.2e-39
|
|
- 28: 4, 9, 707, 22, 2, 7, 2, 614, 2.8e-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 : 2, 10, 744, 1, 23, 3, 4, 71, 1.3e-39
|
|
- 1 : 2, 10, 744, 1, 23, 3, 4, 71, 1.3e-39
|
|
- 2 : 2, 10, 744, 1, 23, 3, 4, 71, 1.4e-39
|
|
- 3 : 2, 10, 744, 1, 23, 3, 4, 71, 1.6e-39
|
|
- 4 : 2, 10, 744, 1, 23, 3, 4, 71, 2.9e-39
|
|
- 5 : 2, 10, 746, 1, 23, 3, 4, 71, 2.1e-39
|
|
- 6 : 2, 10, 755, 1, 23, 3, 4, 72, 1.7e-39
|
|
- 7 : 2, 10, 774, 1, 23, 5, 3, 79, 2.8e-39
|
|
- 8 : 2, 10, 714, 2, 15, 4, 3, 100, 1.4e-39
|
|
- 9 : 2, 10, 714, 2, 15, 4, 3, 100, 1.4e-39
|
|
- 10: 2, 10, 714, 2, 15, 4, 3, 100, 1.6e-39
|
|
- 11: 2, 10, 714, 2, 15, 4, 3, 100, 2.5e-39
|
|
- 12: 2, 10, 716, 2, 15, 4, 3, 101, 9.4e-40
|
|
- 13: 2, 10, 721, 2, 15, 4, 3, 101, 2.9e-39
|
|
- 14: 2, 10, 739, 2, 15, 5, 3, 106, 2.7e-39
|
|
- 15: 2, 10, 715, 3, 12, 4, 3, 130, 9.3e-40
|
|
- 16: 2, 10, 717, 3, 12, 4, 3, 130, 1.3e-39
|
|
- 17: 2, 10, 728, 3, 12, 4, 3, 132, 2.9e-39
|
|
- 18: 2, 10, 716, 4, 9, 4, 3, 159, 1.8e-39
|
|
- 19: 2, 10, 698, 4, 9, 6, 2, 161, 2.8e-39
|
|
- 20: 2, 10, 736, 4, 9, 7, 2, 172, 2.5e-39
|
|
- 21: 2, 10, 699, 5, 8, 7, 2, 193, 1.4e-39
|
|
- 22: 2, 10, 703, 6, 7, 7, 2, 222, 2.4e-39
|
|
- 23: 2, 10, 710, 7, 6, 7, 2, 254, 1.5e-39
|
|
- 24: 2, 10, 730, 9, 5, 7, 2, 320, 2.4e-39
|
|
- 25: 2, 10, 698, 14, 3, 7, 2, 450, 1.2e-39
|
|
- 26: 2, 10, 702, 22, 2, 7, 2, 683, 2.5e-39
|
|
# no solution starting from log norm2 = 27
|
|
|
|
- 3: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 11, 748, 1, 23, 5, 3, 98, 1.4e-39
|
|
- 1 : 1, 11, 748, 1, 23, 5, 3, 98, 1.4e-39
|
|
- 2 : 1, 11, 748, 1, 23, 5, 3, 98, 1.9e-39
|
|
- 3 : 1, 11, 749, 1, 23, 5, 3, 98, 6.7e-40
|
|
- 4 : 1, 11, 751, 1, 23, 5, 3, 98, 8.6e-40
|
|
- 5 : 1, 11, 762, 1, 23, 5, 3, 100, 8.8e-40
|
|
- 6 : 1, 11, 748, 2, 15, 5, 3, 139, 1.3e-39
|
|
- 7 : 1, 11, 748, 2, 15, 5, 3, 139, 1.3e-39
|
|
- 8 : 1, 11, 748, 2, 15, 5, 3, 139, 1.4e-39
|
|
- 9 : 1, 11, 748, 2, 15, 5, 3, 139, 1.7e-39
|
|
- 10: 1, 11, 749, 2, 15, 5, 3, 139, 4.2e-40
|
|
- 11: 1, 11, 750, 2, 15, 5, 3, 139, 9.2e-40
|
|
- 12: 1, 11, 756, 2, 15, 5, 3, 140, 1.8e-39
|
|
- 13: 1, 11, 748, 3, 11, 5, 3, 180, 2.4e-39
|
|
- 14: 1, 11, 749, 3, 11, 5, 3, 180, 2.1e-39
|
|
- 15: 1, 11, 753, 3, 11, 5, 3, 181, 2.3e-39
|
|
- 16: 1, 11, 785, 3, 11, 5, 3, 188, 2.2e-39
|
|
- 17: 1, 11, 726, 4, 9, 7, 2, 220, 1.4e-39
|
|
- 18: 1, 11, 737, 4, 9, 7, 2, 223, 1.7e-39
|
|
- 19: 1, 11, 734, 5, 8, 7, 2, 263, 2.1e-39
|
|
- 20: 1, 11, 737, 6, 7, 7, 2, 304, 1.8e-39
|
|
- 21: 1, 11, 740, 7, 6, 7, 2, 346, 2.8e-39
|
|
- 22: 1, 11, 754, 8, 5, 7, 2, 393, 2.8e-39
|
|
- 23: 1, 11, 757, 11, 4, 8, 2, 522, 2.5e-39
|
|
- 24: 1, 11, 741, 21, 2, 7, 2, 914, 2.2e-39
|
|
- 25: 1, 11, 759, 43, 1, 15, 1, 1872, 2.3e-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, 810, 1, 22, 5, 3, 224, 2.5e-39
|
|
- 1 : 1, 12, 811, 1, 22, 5, 3, 225, 1.2e-39
|
|
- 2 : 1, 12, 813, 1, 22, 5, 3, 225, 2.1e-39
|
|
- 3 : 1, 12, 851, 1, 22, 4, 4, 228, 2.4e-39
|
|
- 4 : 1, 12, 810, 2, 15, 5, 3, 319, 1.8e-39
|
|
- 5 : 1, 12, 810, 2, 15, 5, 3, 319, 1.9e-39
|
|
- 6 : 1, 12, 810, 2, 15, 5, 3, 319, 1.9e-39
|
|
- 7 : 1, 12, 810, 2, 15, 5, 3, 319, 2.2e-39
|
|
- 8 : 1, 12, 811, 2, 15, 5, 3, 320, 7.4e-40
|
|
- 9 : 1, 12, 812, 2, 15, 5, 3, 320, 1.4e-39
|
|
- 10: 1, 12, 818, 2, 15, 5, 3, 322, 2.4e-39
|
|
- 11: 1, 12, 845, 2, 15, 9, 2, 359, 2.7e-39
|
|
- 12: 1, 12, 811, 3, 11, 5, 3, 415, 2.0e-39
|
|
- 13: 1, 12, 815, 3, 11, 5, 3, 417, 8.6e-40
|
|
- 14: 1, 12, 837, 3, 11, 5, 3, 428, 1.8e-39
|
|
- 15: 1, 12, 813, 4, 9, 5, 3, 511, 2.1e-39
|
|
- 16: 1, 12, 795, 4, 9, 8, 2, 519, 1.9e-39
|
|
- 17: 1, 12, 795, 5, 8, 8, 2, 612, 2.0e-39
|
|
- 18: 1, 12, 798, 6, 7, 8, 2, 708, 2.7e-39
|
|
- 19: 1, 12, 802, 7, 6, 8, 2, 805, 2.4e-39
|
|
- 20: 1, 12, 812, 8, 5, 8, 2, 910, 2.6e-39
|
|
- 21: 1, 12, 832, 11, 4, 8, 2, 1225, 2.5e-39
|
|
- 22: 1, 12, 799, 21, 2, 8, 2, 2113, 2.4e-39
|
|
- 23: 1, 12, 823, 43, 1, 17, 1, 4356, 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, 910, 1, 22, 4, 4, 515, 1.3e-39
|
|
- 1 : 1, 13, 921, 1, 22, 4, 4, 521, 2.6e-39
|
|
- 2 : 1, 13, 868, 2, 15, 6, 3, 737, 1.4e-39
|
|
- 3 : 1, 13, 868, 2, 15, 6, 3, 737, 1.4e-39
|
|
- 4 : 1, 13, 868, 2, 15, 6, 3, 737, 1.4e-39
|
|
- 5 : 1, 13, 868, 2, 15, 6, 3, 737, 1.6e-39
|
|
- 6 : 1, 13, 868, 2, 15, 6, 3, 737, 2.6e-39
|
|
- 7 : 1, 13, 869, 2, 15, 6, 3, 738, 2.9e-39
|
|
- 8 : 1, 13, 874, 2, 15, 6, 3, 742, 1.9e-39
|
|
- 9 : 1, 13, 925, 2, 15, 6, 3, 783, 2.8e-39
|
|
- 10: 1, 13, 869, 3, 11, 6, 3, 955, 7.8e-40
|
|
- 11: 1, 13, 871, 3, 11, 6, 3, 957, 1.2e-39
|
|
- 12: 1, 13, 882, 3, 11, 6, 3, 969, 2.5e-39
|
|
- 13: 1, 13, 871, 4, 9, 6, 3, 1175, 7.0e-40
|
|
- 14: 1, 13, 881, 4, 9, 6, 3, 1188, 9.5e-40
|
|
- 15: 1, 13, 882, 5, 8, 6, 3, 1410, 2.7e-39
|
|
- 16: 1, 13, 861, 6, 7, 9, 2, 1633, 1.3e-39
|
|
- 17: 1, 13, 865, 7, 6, 9, 2, 1856, 2.6e-39
|
|
- 18: 1, 13, 875, 8, 5, 9, 2, 2096, 1.8e-39
|
|
- 19: 1, 13, 920, 11, 4, 10, 2, 2907, 2.9e-39
|
|
- 20: 1, 13, 860, 21, 2, 9, 2, 4856, 1.2e-39
|
|
- 21: 1, 13, 910, 43, 1, 20, 1, 10298, 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, 1001, 1, 22, 5, 4, 1221, 2.8e-39
|
|
- 1 : 1, 14, 931, 2, 15, 6, 3, 1664, 9.9e-40
|
|
- 2 : 1, 14, 931, 2, 15, 6, 3, 1664, 1.0e-39
|
|
- 3 : 1, 14, 931, 2, 15, 6, 3, 1664, 1.1e-39
|
|
- 4 : 1, 14, 931, 2, 15, 6, 3, 1664, 1.8e-39
|
|
- 5 : 1, 14, 932, 2, 15, 6, 3, 1666, 2.9e-39
|
|
- 6 : 1, 14, 938, 2, 15, 6, 3, 1676, 2.9e-39
|
|
- 7 : 1, 14, 983, 2, 15, 7, 3, 1784, 2.5e-39
|
|
- 8 : 1, 14, 932, 3, 11, 6, 3, 2161, 7.0e-40
|
|
- 9 : 1, 14, 934, 3, 11, 6, 3, 2165, 1.3e-39
|
|
- 10: 1, 14, 947, 3, 11, 6, 3, 2195, 1.7e-39
|
|
- 11: 1, 14, 934, 4, 9, 6, 3, 2661, 1.8e-39
|
|
- 12: 1, 14, 948, 4, 9, 6, 3, 2700, 2.5e-39
|
|
- 13: 1, 14, 953, 5, 8, 6, 3, 3221, 2.7e-39
|
|
- 14: 1, 14, 921, 6, 6, 10, 2, 3719, 1.9e-39
|
|
- 15: 1, 14, 930, 7, 6, 10, 2, 4249, 1.6e-39
|
|
- 16: 1, 14, 940, 8, 5, 10, 2, 4793, 2.3e-39
|
|
- 17: 1, 14, 931, 13, 3, 10, 2, 7221, 2.3e-39
|
|
- 18: 1, 14, 950, 20, 2, 10, 2, 10900, 2.3e-39
|
|
# no solution starting from log norm2 = 19
|
|
|
|
- 7: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 15, 1018, 2, 15, 5, 4, 3755, 1.9e-39
|
|
- 1 : 1, 15, 1018, 2, 15, 5, 4, 3755, 2.2e-39
|
|
- 2 : 1, 15, 1019, 2, 15, 5, 4, 3758, 7.7e-40
|
|
- 3 : 1, 15, 1020, 2, 15, 5, 4, 3762, 1.3e-39
|
|
- 4 : 1, 15, 1026, 2, 15, 5, 4, 3783, 1.5e-39
|
|
- 5 : 1, 15, 1064, 2, 15, 8, 3, 4118, 2.8e-39
|
|
- 6 : 1, 15, 988, 3, 11, 7, 3, 4883, 1.5e-39
|
|
- 7 : 1, 15, 990, 3, 11, 7, 3, 4893, 1.3e-39
|
|
- 8 : 1, 15, 999, 3, 11, 7, 3, 4936, 2.7e-39
|
|
- 9 : 1, 15, 990, 4, 9, 7, 3, 6006, 2.8e-39
|
|
- 10: 1, 15, 1002, 4, 9, 7, 3, 6078, 2.5e-39
|
|
- 11: 1, 15, 998, 5, 7, 7, 3, 7177, 2.4e-39
|
|
- 12: 1, 15, 976, 6, 6, 10, 2, 8302, 1.8e-39
|
|
- 13: 1, 15, 995, 7, 6, 11, 2, 9643, 2.6e-39
|
|
- 14: 1, 15, 1010, 8, 5, 11, 2, 10923, 2.5e-39
|
|
- 15: 1, 15, 986, 13, 3, 10, 2, 16151, 2.0e-39
|
|
- 16: 1, 15, 995, 20, 2, 11, 2, 24195, 2.4e-39
|
|
# no solution starting from log norm2 = 17
|
|
|
|
- 8: # bits
|
|
-ln2: k, N, n, br_l,br_b, ks_l,ks_b, cost, p_error
|
|
- 0 : 1, 16, 1051, 2, 14, 7, 3, 8402, 2.0e-39
|
|
- 1 : 1, 16, 1052, 2, 14, 7, 3, 8410, 2.3e-39
|
|
- 2 : 1, 16, 1057, 2, 14, 7, 3, 8449, 2.2e-39
|
|
- 3 : 1, 16, 1113, 2, 14, 6, 4, 8743, 2.3e-39
|
|
- 4 : 1, 16, 1052, 3, 11, 7, 3, 10908, 9.7e-40
|
|
- 5 : 1, 16, 1054, 3, 11, 7, 3, 10929, 1.9e-39
|
|
- 6 : 1, 16, 1068, 3, 11, 7, 3, 11070, 1.7e-39
|
|
- 7 : 1, 16, 1055, 4, 9, 7, 3, 13444, 1.7e-39
|
|
- 8 : 1, 16, 1075, 4, 9, 7, 3, 13694, 1.9e-39
|
|
- 9 : 1, 16, 1061, 5, 7, 7, 3, 16039, 2.2e-39
|
|
- 10: 1, 16, 1031, 6, 6, 11, 2, 18558, 2.0e-39
|
|
- 11: 1, 16, 1069, 7, 6, 11, 2, 21771, 2.8e-39
|
|
- 12: 1, 16, 1082, 8, 5, 23, 1, 26228, 2.8e-39
|
|
- 13: 1, 16, 1040, 13, 3, 11, 2, 36008, 1.9e-39
|
|
- 14: 1, 16, 1054, 20, 2, 11, 2, 54012, 2.3e-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, 1140, 2, 14, 6, 4, 18754, 2.2e-39
|
|
- 1 : 1, 17, 1157, 2, 14, 6, 4, 19026, 2.7e-39
|
|
- 2 : 1, 17, 1107, 3, 11, 8, 3, 24315, 2.0e-39
|
|
- 3 : 1, 17, 1109, 3, 11, 8, 3, 24358, 2.4e-39
|
|
- 4 : 1, 17, 1120, 3, 11, 8, 3, 24594, 2.2e-39
|
|
- 5 : 1, 17, 1110, 4, 9, 8, 3, 29929, 2.0e-39
|
|
- 6 : 1, 17, 1126, 4, 9, 8, 3, 30353, 2.2e-39
|
|
- 7 : 1, 17, 1113, 5, 7, 8, 3, 35574, 2.2e-39
|
|
- 8 : 1, 17, 1141, 5, 7, 13, 2, 37884, 2.9e-39
|
|
- 9 : 1, 17, 1142, 7, 6, 13, 2, 49337, 2.7e-39
|
|
- 10: 1, 17, 1092, 10, 4, 12, 2, 63306, 1.1e-39
|
|
- 11: 1, 17, 1098, 13, 3, 12, 2, 80121, 2.3e-39
|
|
- 12: 1, 17, 1113, 20, 2, 12, 2, 120163, 2.1e-39
|
|
# no solution starting from log norm2 = 13
|
|
|
|
- 10: # bits
|
|
# no solution at all
|