Commit Graph

285 Commits

Author SHA1 Message Date
Quentin Bourgerie
582328a35d cleanup(compiler/passes): Remove some warnings
Remove unused variables in LowLFHEToConcreteCAPI
2021-11-30 16:11:33 +01:00
Quentin Bourgerie
b1e7a66b09 cleanup(compiler/lowlfhe): Remove useless LowLFHE ops and types
Some of these operators/types could be usefull but they are not yet use on the compiler pipeline it's preferable to remove them, and reintroduce if needed.
2021-11-30 16:11:33 +01:00
rudy
ddca6840f1 fix(CompilerEngine): include mlir diagnostic in error message
Resolves #288

example
before:
Failed to lower to LLVM dialect

after:
Failed to lower to LLVM dialect
test.mlir:3:10: error: unexpected error: 'linalg.copy' op expected indexing_map #1 to have 2 dim(s) to match the number of loops
    %0 = tensor.extract_slice %arg0[0, 0] [3, 1] [1, 1] : tensor<3x2x!HLFHE.eint<3>> to tensor<3x!HLFHE.eint<3>>
         ^
2021-11-29 17:15:46 +01:00
Andi Drebes
8c06a5a1b2 enhance(compiler): Replace linalg type converter pattern with generic pattern
Replace `LinalgGenericTypeConverterPattern`, specialized for
`linalg.generic` with a generic type converter pattern
`RegionOpTypeConverterPattern` that can be instantiated for any
operation that has one or more regions.

Further enhancements:
- Supports multiple regions
- Uses more idiomatic instantiations of `llvm::for_each` instead of
  manual iterations using for loops
2021-11-26 17:05:21 +01:00
Mayeul@Zama
94b8070b3f tests(compiler): make FileCheck tests stricter 2021-11-24 14:18:38 +01:00
Quentin Bourgerie
fe6de8f0c5 style(compiler): Formatting 2021-11-24 09:19:25 +01:00
Quentin Bourgerie
ddbafd713d feat(compiler): Add the HLFHELinalg.matmul_int_eint operator 2021-11-24 09:19:25 +01:00
Andi Drebes
ffe32f5e90 fix(compiler): Suppress various warnings about expressions with different signedness 2021-11-19 16:23:15 +01:00
Quentin Bourgerie
ec8387843b cleanup(compiler/test): Fix warning in hlfhelinalg end to end tests about comparaison between signed and unsigned integers 2021-11-17 14:19:15 +01:00
Quentin Bourgerie
e0af1523bc cleanup(compiler/test): Formatting of mlir test string 2021-11-17 14:19:15 +01:00
Quentin Bourgerie
100862e484 feat(compiler): Add the support of linalg.tensor_expand_shape and linalg.tensor_collapse_shape on encrypted tensors 2021-11-17 14:19:15 +01:00
youben11
c5e3d9add8 fix(compiler): reserve the right amount of memory 2021-11-15 11:25:44 +01:00
youben11
36413235c5 feat(compiler): lower HLFHELinalg.apply_multi_lut
Support broadcasting
2021-11-15 11:25:44 +01:00
youben11
ac7f1f5a6b feat(compiler): add HLFHELinalg.apply_multi_lut
Apply a lookup table on the different elements of the encrypted tensors,
but using different lookup tables.

MANP support as well as tests
2021-11-15 11:25:44 +01:00
Ayoub Benaissa
85954f0373 fix: correct PYTHONPATH in docker image 2021-11-15 10:30:43 +01:00
Quentin Bourgerie
f2b5d3316f fix(compiler): don't try to broadcast when dims are equals with value 1 (7c8399)
Removed due of miss conflict resolution
2021-11-15 09:59:52 +01:00
Quentin Bourgerie
5df775a51b feat(compiler): MANP Analysis of HLFHELinalg.matmul (closes #178) 2021-11-12 16:50:29 +01:00
Quentin Bourgerie
3fad9870a8 cleanup(compiler): Fix warning about comparison of expressions with different signedness in TensorOpsToLinalg 2021-11-12 16:50:29 +01:00
Quentin Bourgerie
af0819c403 feat(compiler): Lower HLFHELinalg.matmul_eint_int to linalg.generic (close #177) 2021-11-12 16:50:29 +01:00
Quentin Bourgerie
b598f0ffca refactor(compiler): Move the conversion from scf to std on the pipeline intead of embedded in a pass 2021-11-12 16:50:29 +01:00
Quentin Bourgerie
12b4771405 feat(compiler/linalg): Definition of HLFHELinalg.matmul_eint_int (closes #176) 2021-11-12 16:50:29 +01:00
youben11
7c83994c7f fix(compiler): don't try to broadcast when dims are equals with value 1 2021-11-12 15:07:08 +01:00
youben11
99cce18c6a feat: get RT lib path from py and use as sharedlib
Try to find the runtime library automatically (should only work on
proper installation of the package), and fail silently by not passing
any RT lib. The RT lib can also be specified manually. The RT lib will
be used as a shared library by the JIT compiler.
2021-11-12 15:06:49 +01:00
Andi Drebes
e356b8f797 fix(ci): Conformance test: Abort on failure in any command in the run section
By default, all commands in the `run` section of
`.github/workflows/conformance.yml` are executed, regardless of their
return values and the return value of the last command is used as the
result for the entire flow. Failing test followed by passing tests
thus remain undetected.

This change forces the use of the bash shell and causes it to exit
immediately with a non-zero return value when one of the commands
fails using `set -e`.
2021-11-12 15:05:55 +01:00
youben11
3246f8b035 chore: remove build files from docker image
- Reduce the size of the docker image
- Make sure ccache is always used => faster CI tests
2021-11-12 15:05:55 +01:00
Ayoub Benaissa
2088e86edd ci: run concretelib compatibility-check once a week 2021-11-12 12:12:07 +01:00
Andi Drebes
d1960a2a7f test(compiler): Add test for lambdas returning tensors of different integer types
Add tests with lambdas returning constant n-dimensional tensors
composed of different integer types (uint8_t, uint16_t, uint32_t, and
uint64_t).
2021-11-12 12:00:39 +01:00
Andi Drebes
f54c0dd8d8 enhance(compiler): JitCompilerEngine: Add support for arbitrary int result tensors
Add support for result tensors composed of uint8_t, uint16_t, uint32_t
and uint64_t elements, replacing the current implementation, which
only supports uint64_t tensors.
2021-11-12 12:00:39 +01:00
Andi Drebes
3118983287 enhance(compiler): Add function JITLambda::Arguments::getResultWidth
Add a new method `JITLambda::Arguments::getResultWidth` returning the
width of a scalar result or the element type of a tensor result at a
given position.
2021-11-12 12:00:39 +01:00
Andi Drebes
e4cd340e36 enhance(compiler): JIT: Support result tensors with arbitrary element types
Currently, `JITLambda::Arguments` assumes result tensors are always
composed of `uint64_t` elements. This change adds support for
arbitrary scalar element types.
2021-11-12 12:00:39 +01:00
Andi Drebes
3bf493e83c ci: Force use of ccache in conformance.yml
Set the make variable `CCACHE` to `ON` in order to force the use of
`ccache` during compilation of the code. For unknown reasons, the
build directory must also be removed. Otherwise, a complete rebuild
circumventing the cache is triggered and `ccache` does not have any
effect on compilation time.

Debug information printing `ccache` statistics before and after the
build has also been added.
2021-11-10 15:46:48 +01:00
youben11
a888a6b329 typo: bad function name 2021-11-10 15:24:31 +01:00
youben11
6df9f09e48 feat(compiler): lower HLFHELinalg.neg_eint 2021-11-10 15:24:31 +01:00
youben11
99d6d11616 feat(compiler): support HLFHELinalg.neg_eint in MANP 2021-11-10 15:24:31 +01:00
youben11
d9adbab036 feat(compiler): add HLFHELinalg.neg_eint op 2021-11-10 15:24:31 +01:00
youben11
ba40f5582a test(compiler): test HLFHE.neg_eint execution 2021-11-10 15:24:31 +01:00
youben11
efacd7d8a1 feat(compiler): support HLFHE.neg_eint in MANP 2021-11-10 15:24:31 +01:00
youben11
08869bc998 chore: separate unittests into different executables
it's easier to run a specific set of tests if they are into separate
executable. We shouldn't have to run them all for testing a specific set
of tests
2021-11-10 15:24:21 +01:00
youben11
aee493392b feat(compiler): lower neg_eint from HLFHE to LowLFHE 2021-11-10 15:24:21 +01:00
youben11
c1cd6bb380 feat(compiler): add MidLFHE.neg_glwe op 2021-11-10 15:24:06 +01:00
youben11
cc4e403e7a feat(compiler): add HLFHE.neg_eint op 2021-11-10 14:52:35 +01:00
Andi Drebes
47cb4b0e70 fix(compiler): HLFHELinalg JIT tests: Use immutable ArrayRefs for tensor arguments
Fix compiler warnings related to the conversion from const pointers to
mutable pointers in `tests/unittest/end_to_end_jit_hlfhelinalg.cc`.
2021-11-10 11:25:35 +01:00
Andi Drebes
8cd893a7fd fix(compiler): JIT unit tests: Remove unused variables
Remove unused variable `pos` in `End2EndJit_ClearTensor_2D::extract`
and `End2EndJit_EncryptedTensor_2D::extract` to avoid warnings on
compilation.
2021-11-10 11:25:35 +01:00
Andi Drebes
5cc551dd4f fix(compiler): JIT unit tests: Don't compare expressions of different signedness
Fix compiler warnings in `end_to_end_jit_clear_tensor.cc` and
`end_to_end_jit_encrypted_tensor.cc` due to the comparison of integer
expressions of different signedness.
2021-11-10 11:25:35 +01:00
rudy
97389a3b06 Move HLFHE.dot_eint_int to HLFHELinalg.
Resolves #183
2021-11-09 11:39:08 +01:00
youben11
0670d4efc1 fix(python): add mlir[.dialects] as namespace packages
I initially thought there were missing init files, but it was intended
that mlir and mlir.dialects are namespace packages
2021-11-08 15:29:57 +01:00
Andi Drebes
c401b5ae44 test(compiler): Add JIT test returning multi-dimensional TensorLambdaArgument 2021-11-08 12:00:20 +01:00
youben11
59e859177c refactor: replace ExecutionArg by TensorLambdaArg
This add support for tensor inputs from the python bindings
2021-11-08 11:55:02 +01:00
youben11
56e261d140 fix(compiler): pass dimensions at TensorLambdaArg creation 2021-11-08 11:55:02 +01:00
youben11
b501e3d6c0 feat(python): support functions returning tensors 2021-11-08 11:55:02 +01:00