Commit Graph

314 Commits

Author SHA1 Message Date
Quentin Bourgerie
dbfde466bc feat(python): Add compilation feedback to the python bindings 2022-09-14 10:03:25 +02:00
Quentin Bourgerie
f4673e8276 feat(compiler): First draft or compilation feedback 2022-09-14 10:03:25 +02:00
rudy
32437af31b feat(test): check test error rate for fast cases 2022-09-12 17:29:03 +02:00
rudy
48bf6e2696 feat(optimizer): report or warn using global p-error 2022-09-12 17:22:38 +02:00
Umut
41c9f86803 feat: create encrypted signed integer type 2022-09-09 17:38:21 +03:00
Antoniu Pop
39e7313348 feat(tests): add function for increasing the stack limit and use for benchmark overflow. 2022-09-08 11:35:56 +01:00
rudy
deef4486ba fix: negative value have full complement 2 noise
Revert ae9a04cd56
2022-09-06 15:27:20 +02:00
Quentin Bourgerie
9e1284e880 enhance(tests): Add more tests for leveled fhe operators up to 57 bits 2022-08-25 09:46:51 +02:00
Quentin Bourgerie
2ed9fc7583 enhance(tests): Generate from 1 to 29 bits end to end tests fhe tests for basic operators 2022-08-25 09:46:51 +02:00
Quentin Bourgerie
c08a06ed8e chore: Just rename configuration variable to enable the dataflow runtime 2022-08-24 11:35:05 +02:00
Quentin Bourgerie
3b829e7628 tests: Fix some reference since the optimizer behavior has changed 2022-08-22 17:36:39 +02:00
Quentin Bourgerie
9257404f5f fix(python-bindings): Support np.array with dtype upt to 64 bits 2022-08-19 14:15:21 +02:00
Quentin Bourgerie
d647bc735f fix: Now the maximum precision is 16bits 2022-08-16 08:40:14 +02:00
Quentin Bourgerie
10f4769dae test: remove default parameters for 16bits tests 2022-08-16 08:40:14 +02:00
Quentin Bourgerie
740816feec chore: Change default constraint on test 2022-08-16 08:40:14 +02:00
Quentin Bourgerie
525d8da3a8 test: remove default parameters for 16bits tests 2022-08-16 08:40:14 +02:00
Quentin Bourgerie
73fbb20f6b tests: Temporary unactivate some tests 2022-08-12 16:35:11 +02:00
Antoniu Pop
8bacd9e7ac fix(tests): add more input values to 16bit test to catch cases where 3 byte (i17) values are not aligned properly. 2022-08-12 16:35:11 +02:00
Quentin Bourgerie
8cd3a3a599 feat(compiler): First draft to support FHE.eint up to 16bits
For now what it works are only levelled ops with user parameters. (take a look to the tests)

Done:
- Add parameters to the fhe parameters to support CRT-based large integers
- Add command line options and tests options to allows the user to give those new parameters
- Update the dialects and pipeline to handle new fhe parameters for CRT-based large integers
- Update the client parameters and the client library to handle the CRT-based large integers

Todo:
- Plug the optimizer to compute the CRT-based large interger parameters
- Plug the pbs for the CRT-based large integer
2022-08-12 16:35:11 +02:00
Quentin Bourgerie
58527a44c3 test: Add extract_slice_with_rank_reduction test since it is fixed (close #315) 2022-08-11 10:12:55 +02:00
rudy
cc6c2576ec feat(optimizer): create optimizer dag and use it 2022-08-11 10:10:27 +02:00
rudy
bd3d462384 feat(multiprecision): enable real multiple precision computation 2022-08-11 10:10:27 +02:00
Quentin Bourgerie
80f36c14de fix: Update the llvm-project with memref.subview fold fix to fix slice extraction with negative strides 2022-08-09 11:43:11 +02:00
Quentin Bourgerie
534e683055 fix: Lowering from ConcreteToBConcrete of from_elements on ND tensor of Concrete.lwe_ciphertext 2022-08-09 10:26:32 +02:00
Antoniu Pop
abff4e1c17 tests(dfr): fix mlir for func.func in tests. 2022-08-04 17:06:09 +01:00
Antoniu Pop
2f5f9f6cf1 test(dfr): add AES test. 2022-08-04 17:06:09 +01:00
Antoniu Pop
8f2b12d812 test(distributed): fix termination of tests meant to run on distributed systems to avoid ungraceful exit. 2022-08-04 17:06:09 +01:00
Antoniu Pop
93d5a06557 test: add a test for distributed execution. 2022-08-04 17:06:09 +01:00
Antoniu Pop
615109d432 fix(dfr): simplify initialization and add namespaces where possible. 2022-08-04 17:06:09 +01:00
Antoniu Pop
c79cedf557 test(parallelization): add small NN test for auto parallelization. 2022-08-04 17:06:09 +01:00
Antoniu Pop
8defa338e8 feat(runtime): enable parallel execution for TestLib when available. 2022-08-04 17:06:09 +01:00
Antoniu Pop
8beb596fab test(dfr): remove DFR unittests which are now obsolete. 2022-08-04 17:06:09 +01:00
youben11
cace7f1ebb test: add e2e tests of grouped conv2d 2022-08-04 11:19:18 +01:00
youben11
e52ccfc1a9 feat: support grouped conv2d 2022-08-04 11:19:18 +01:00
Andi Drebes
83f2095af5 test(compiler): Add regression tests for extract_slice and collapse on encrypted tensors
Commit `45577fb79e7bef9d6874906971f485ca6ed111b8` introduced a
regression causing garbage to be generated for IR involving
`tensor.extract_slice` and `tensor.collapse` in some cases. This
commit adds two tests checking for the absence of the regression.

Co-authored-by: Umut Sahin <umut.sahin@zama.ai>
2022-07-28 10:13:35 +02:00
Andi Drebes
85ebc0cb7a Rebase onto llvm-project 3f81841474fe with patch for arbitrary types in linalg named ops
Rebase to llvm-project at 3f81841474fe with a pending upstream patch
for arbitrary element types in linalg named operations.

Co-authored-by: Ayoub Benaissa <ayoub.benaissa@zama.ai>
2022-07-27 22:45:38 +02:00
Quentin Bourgerie
511bcd99e7 Revert "feat(optimizer): create optimizer dag and use it"
This reverts commit 0b99f6d278.
2022-07-27 18:35:47 +02:00
youben11
149cc24821 fix: get path to test file using __FILE__ 2022-07-27 10:29:47 +01:00
rudy
0b99f6d278 feat(optimizer): create optimizer dag and use it 2022-07-25 21:06:14 +02:00
Umut
e24dbec249 feat: create FHELinalg.from_element operation
This commit is introduced because python bindings for `tensor.from_elements` are not generated automatically. Previously, we overcame this with string manipulation, but with the latest version of the compiler, it became a problem. This commit should be reverted eventually. See https://discourse.llvm.org/t/cannot-create-tensor-from-elements-operation-from-python-bindings/4768 for the discussion in LLVM forums.
2022-07-08 14:43:46 +03:00
Quentin Bourgerie
2cfccd8f89 refactor: restructure the tests directory layout 2022-07-07 17:10:09 +02:00
Antoniu Pop
235cf6fbe3 fix(unittest): fix expected result for sub_eint_int_term_to_term_broadcast 2022-06-28 17:11:12 +01:00
Antoniu Pop
26084a68aa fix(compiler): delay all memref deallocation calls introduced by the bufferizer and that are made into futures until after the synchronization point. 2022-06-28 17:11:12 +01:00
Umut
b3a2671dc7 feat: implement all kinds of subtractions 2022-06-28 11:13:03 +03:00
Quentin Bourgerie
1e261dea7c feat(test): add option to provide manual crypto parameters for tests 2022-06-28 09:24:39 +02:00
Quentin Bourgerie
f06957a197 tests(compiler): Add a benchmark tool builded thanks google-benchmarks 2022-06-27 16:45:56 +02:00
Quentin Bourgerie
2de76e9c4e fix(compiler): Fix tfhe global parametrization to handle k>1
Co-authored-by: Mayeul@Zama <mayeul.debellabre@zama.ai>
2022-06-24 15:35:51 +02:00
Quentin Bourgerie
9dd776533a cleanup(compiler): Remove useless concrete types, simplify print and parse, and remove BConcreteToBConcreteCAPI pass 2022-06-24 11:00:08 +02:00
Mayeul@Zama
928a44d243 chore(ci): enforce ending files with a newline 2022-06-16 17:04:25 +02:00
Andi Drebes
45577fb79e Rebase onto llvm-project f69328049e9e with local changes
This commit rebases the compiler onto commit f69328049e9e from
llvm-project.

Changes:

* Use of the one-shot bufferizer for improved memory management

* A new pass `OneShotBufferizeDPSWrapper` that converts functions
  returning tensors to destination-passing-style as required by the
  one-shot bufferizer

* A new pass `LinalgGenericOpWithTensorsToLoopsPass` that converts
  `linalg.generic` operations with value semantics to loop nests

* Rebase onto a fork of llvm-project at f69328049e9e with local
  modifications to enable bufferization of `linalg.generic` operations
  with value semantics

* Workaround for the absence of type propagation after type conversion
  via extra patterns in all dialect conversion passes

* Printer, parser and verifier definitions moved from inline
  declarations in ODS to the respective source files as required by
  upstream changes

* New tests for functions with a large number of inputs

* Increase the number of allowed task inputs as required by new tests

* Use upstream function `mlir_configure_python_dev_packages()` to
  locate Python development files for compatibility with various CMake
  versions

Co-authored-by: Quentin Bourgerie <quentin.bourgerie@zama.ai>
Co-authored-by: Ayoub Benaissa <ayoub.benaissa@zama.ai>
Co-authored-by: Antoniu Pop <antoniu.pop@zama.ai>
2022-06-14 14:35:25 +02:00