Commit Graph

139 Commits

Author SHA1 Message Date
Andrei Stoian
817ee6b637 feat(compiler): add matmul eint eint op 2023-05-15 11:36:47 +02:00
Mayeul@Zama
74feda147c feat(optimizer): add brute-force optimizer
Co-authored-by: Samuel Tap <samuel.tap@zama.ai>
2023-05-12 11:12:47 +02:00
Quentin Bourgerie
d973f068f6 fix(compiler): Fixing extra conversion fixup when producer is not directly a TFHE operator 2023-05-12 09:47:35 +02:00
Quentin Bourgerie
0fa1b4ba1d refactor(compiler): Cleanup TFHECircuitSolutionParametrization and make it less verbose in verbose mode 2023-05-12 09:47:35 +02:00
Quentin Bourgerie
462a23b622 fix(compiler/fhe): Allows noop FHE.round operators and fold it 2023-05-11 12:52:38 +02:00
Quentin Bourgerie
eff442438b fix(compiler): Do not create dealloc on the bufferization pass as that place all dealloc at the end of the program 2023-05-10 09:18:47 +02:00
aPere3
0d2416fe80 chore(compiler): add code doc on encrypted mul 2023-05-05 12:43:41 +02:00
youben11
f6c70ac18e chore(compiler): clean dialect licenses
set dialect licenses to apache 2.0 and keeps the rest following the main
license
2023-05-04 10:28:50 +01:00
Mayeul@Zama
ece5408887 fix(optimizer): fix clippy lint 2023-04-27 13:51:29 +02:00
Mayeul@Zama
3558ba5586 feat(backend-cpu): choose fastest aes implementation at runtime 2023-04-24 15:02:22 +02:00
Umut
41bf801ce1 feat(frontend-python): introduce parameter selection strategy configuration 2023-04-21 17:38:05 +02:00
Mayeul@Zama
2800f74fb8 chore(compiler): clean up .gitignore 2023-04-20 15:11:38 +02:00
Mayeul@Zama
8033c934f3 chore(compiler): remove old makefile targets 2023-04-20 15:11:38 +02:00
Quentin Bourgerie
dfa0c8b202 feat(compiler): Add dag-multi benchmark to the run-cpu-benchmark target 2023-04-20 09:46:24 +02:00
Quentin Bourgerie
ef6fa86603 fix(compiler/bench): Fixing round end to end yaml description generation with shapes arguments 2023-04-20 09:46:24 +02:00
Quentin Bourgerie
af79774ae0 fix(compiler/tests/bench): Add optimizer strategy to the name of benchs and tests 2023-04-20 09:46:24 +02:00
aPere3
50255cc908 fix(compiler): propagates oid when simplifying fhelinalg zero sums 2023-04-18 13:36:15 +02:00
aPere3
85c29c2e39 chore(compiler): move end-to-end linalg tests to fixtures 2023-04-18 13:36:15 +02:00
Quentin Bourgerie
065e4d7b40 test(compiler): Temporary remove batching check-test as it to invasive 2023-04-14 15:01:18 +02:00
aPere3
141efc8db2 bench(compiler): Add e2e benchmark for rounded PBS 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
0e59f66a64 fix(compiler): FHE.to_bool and FHE.from_bool is a no op and not reduce the noise to the base 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
edbdcdd7ec fix(compiler/test): Fixing naming in end_to_end tests 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
3ada182c22 test(compiler): Enable dag-multi tests on all yaml tests 2023-04-14 15:01:18 +02:00
rudy
311ac8ce99 feat(compiler,ci): parallel tests 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
944f9f6fc2 fix(compiler/benchmark): Remove always optimizer display 2023-04-14 15:01:18 +02:00
rudy
9c3c72a176 fix(optimizer): multi, more than 2 partitions, optimize_macro use optimized fks instead of lower bound 2023-04-14 15:01:18 +02:00
rudy
dd34ef120b fix(optimizer): multi, more than 2 partitions, some fks was not copied back 2023-04-14 15:01:18 +02:00
aPere3
0ba154fca8 test(compiler): add multi precision tests 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
955dea6fcd feat(compiler/tests): Add verbose options to end_to_end_test 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
d388f08cc5 test(compiler): Fix check test 2023-04-14 15:01:18 +02:00
rudy
008eec658b fix(optimizer,tests): sign extract is slower with slow ks 2023-04-14 15:01:18 +02:00
rudy
06b724ab50 feat(compiler/tests): rounded tests, add rounded tlu + tensorized 2023-04-14 15:01:18 +02:00
rudy
81fd9f3441 feat(optimizer): multi-parameters, use slow keyswitch until stabilized 2023-04-14 15:01:18 +02:00
rudy
9c68d132ca feat(optimizer): multi-parameter entry point, single parameter solution for woppbs 2023-04-14 15:01:18 +02:00
rudy
d2a342fc84 feat(optimizer): multiparameters compiler entry point 2023-04-14 15:01:18 +02:00
rudy
3e05aa47a4 feat(optimizer): multiparameters optimization 2023-04-14 15:01:18 +02:00
rudy
361244abd0 feat(optimizer): symbolic variance constraints for multiparameters 2023-04-14 15:01:18 +02:00
rudy
104ec93881 feat(optimizer): symbolic variance for multi-parameter 2023-04-14 15:01:18 +02:00
rudy
38646b7559 feat(optimizer): dag partitionning based on p_cut 2023-04-14 15:01:18 +02:00
rudy
c6b5a6111b feat(optimizer): display trait for op and dag 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
caaec449f5 fix(optimizer): Conversion between dag and circuit solution 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
142e0ed77e feat(compiler): Integrate circuit solution optimization 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
953c202fe1 refactor(compiler): Propagate optimizer dag node identifier along the compilation pipeline 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
7d1c43bc47 feat(compiler/multi-parameters): Create a pass to apply the multi-parameter circuit solution of the optimize 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
f0ca5aa427 feat(optimizer): Add a dump function to the CircuitSolution for debugging 2023-04-14 15:01:18 +02:00
Quentin Bourgerie
53b68a215b refactor(optimizer-cpp): Move CircuitSolution to a namespace en remove unecessary Box in optmize_multi 2023-04-14 15:01:18 +02:00
aPere3
cacffadbd2 feat(compiler): add support for multikey
This commit brings support for multiple secret keys in the TFHE
dialect. In particular, a parameterized `TFHE` circuit can now be
given as input, with any combination of (semantically valid) of
ks/bs/woppbs mixing different secret keys, and compiled down to a
valid executable function, with server keys properly looked up.

Secret keys are now stateful objects which can be:
-> none/unparameterized (syntax `sk?`): The keys are in state after
   the lowering from the `FHE` dialect.
-> parameterized (syntax `sk<identifier, polysize, dimension>`): The
   keys were parameterized, either by user or by the optimizer. The
   `identifier` field can be used to disambiguate two keys with same
   `polysize` and `dimension`.
-> normalized (syntax `sk[index]<polysize, dimension>`): The keys were
   attached to their index in the list of keys in the runtime context.

The _normalization_ of key indices also acts on the ksk, bsk and pksk,
which are given indices in the same spirit now.

Finally, in order to allow parameterized `TFHE` circuit to be given
as input and compiled down to executable functions, we added a way to
pass the encodings that are used to encode/decode the circuit
inputs/outputs. In the case of a compilation from the `FHE` dialect,
those informations are automatically extracted from the higher level
informations available in this dialect.
2023-04-14 15:01:18 +02:00
Mayeul@Zama
56d2d3e40d chore(tools): add Makefile generated tests to .gitignore 2023-04-13 11:10:48 +02:00
rudy
25d5157f42 docs(optimizer): README.md, bad link 2023-04-13 09:49:00 +02:00
rudy
a5c6c042dd docs(optimizer): concrete-optimizer README uses v0-parameters README 2023-04-12 11:58:06 +02:00