Commit Graph

120 Commits

Author SHA1 Message Date
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
Umut
14aa92c511 fix(compiler): correctly determine dimensions during (de)serialization of public args 2023-04-12 07:55:33 +02:00
Mayeul@Zama
df3a21fbd3 docs(optimizer): add readme 2023-04-11 14:55:57 +02:00
Umut
673b02473f feat(frontend/python): explicit key management 2023-04-11 14:55:57 +02:00
rudy
8a672a0c59 feat(optimizer): check dag inputs index during dag correctness check 2023-04-11 09:16:25 +02:00
Umut
b73d465f1d fix(compiler): implement MANP calculation for FHELinalg.to_(un)signed 2023-04-07 19:42:57 +02:00
Antoniu Pop
990df766bb test(compiler): disable testing of StreamEmulator. 2023-04-06 16:23:20 +02:00
aPere3
e50013b75c fix(compiler): allow FHELinalg.apply_lookup_table on esint 2023-04-05 10:35:00 +02:00
rudy
9cacd4adff fix(compiler): accept signed & tensorized tlu 2023-04-03 13:23:20 +02:00
Umut
8f90074958 feat(compiler): implement FHELinalg.round operation 2023-03-31 10:12:21 +02:00
rudy
86bec09225 fix(optimizer): dot better support for for broadcasting
needed for rounded over tensors
2023-03-30 09:48:58 +02:00
rudy
f596afb607 fix(compiler): more robust high global_p_error optimization 2023-03-30 09:31:08 +02:00
rudy
88ab4d0312 fix(optimizer): woppbs + global_p_error was not possible 2023-03-30 09:31:08 +02:00
Pedro Alves
dab31433d9 fix(backend): fix ci after 08e8012
Google benchmark is built twice due to the new bench infrastructure for
concrete-cuda, this commit fixes it by introducing
CONCRETE_CUDA_BUILD_TESTS and CONCRETE_CUDA_BUILD_BENCHMARKS options to skip
unecessary builds.
2023-03-29 14:36:35 +02:00
Umut
371f2076f7 fix(compiler/bindings): update runtime library lookup to consider concrete-python as well 2023-03-28 14:29:19 +02:00
aPere3
2728046ae7 chore(compiler): allows unsecure keyset caches to be generated
For debugging purpose, add a cmake variable that allows to generate
unsecure keycaches, that allows tracing ops to show the message in the
ciphertext body.
2023-03-28 09:15:04 +02:00
Agnes Leroy
df5f1837fc test(compiler): add test for N = 16384 on GPU 2023-03-24 15:29:43 +01:00
Andi Drebes
d1781e0901 refactor(compiler): Remove unused header files from TensorOpsToLinalg.cpp 2023-03-24 11:06:51 +01:00
Andi Drebes
488877ac0b test(compiler): Add tests for batching of TFHE operations
Re-introduce the previously deleted batching tests for BConcrete as
tests for TFHE with the addition of a new test, checking that
non-batchable operands generated by pure operations are hoisted.
2023-03-24 11:06:51 +01:00
Andi Drebes
fa5c09a52b feat(compiler): Run batching pass after conversion to TFHE
With TFHE operations becoming batchable, the batching pass must now be
run after the conversion to TFHE,and TFHE parametrization, but before
any further lowering.
2023-03-24 11:06:51 +01:00