Commit Graph

69 Commits

Author SHA1 Message Date
youben11
32d67726e2 feat(LowToCAPI): replace key alloc w getters from RT 2021-09-09 20:35:28 +02:00
youben11
c6b1480cc6 feat: generate runtime context at Argument creation 2021-09-09 20:35:28 +02:00
youben11
d1332dfd9a fix(compiler): polynomialSize from logPolynomialSize
The polynomialSize is currently holding its log2 instead of the actual
value. This should be fixed later, but in the meantime, we need to
compute it from log2
2021-09-09 20:35:28 +02:00
youben11
50d2ff82af chore(compiler): disable bitwidth check for table lookup 2021-09-09 20:35:28 +02:00
youben11
8aee5dd5c3 chore(runtime): link concrete statically with runtime lib 2021-09-09 20:35:28 +02:00
youben11
de81ac3f3e feat: Runtime library 2021-09-09 20:35:28 +02:00
youben11
ea3c940f4a feat: lower LowLFHE types (apply_lut) to llvm.ptr 2021-09-09 20:35:28 +02:00
youben11
6e2ac3af4e feat: parameterize KS operation 2021-09-09 20:35:28 +02:00
youben11
14f171bef9 feat: parameterize bst operation
This is needed to have the right parameters when calling concrete
2021-09-09 20:35:28 +02:00
youben11
2b0cfce1f6 feat(compiler): LowToCAPI of apply_lut 2021-09-09 20:35:28 +02:00
Quentin Bourgerie
d03adbd7dc enhance(compiler): Add options for verbose passes 2021-09-08 11:44:51 +02:00
Quentin Bourgerie
1077c9167c enhance(compiler): Full lowering of hlfhe.zero, make dot_eint_int fully lowerable 2021-09-08 11:44:51 +02:00
Quentin Bourgerie
de7129fe8e feat(compiler/llvm-pipeline): Bufferize linalg and convert to loops 2021-09-08 11:44:51 +02:00
Quentin Bourgerie
a654fb2d0e enhance(compiler/midlfhe): Handle linalg.generic in parametrization pass 2021-09-08 11:44:51 +02:00
Quentin Bourgerie
697d4033e1 fix(compiler): typo 2021-09-06 10:26:40 +02:00
Quentin Bourgerie
19f1a22b6a fix(compiler/midlfhe): Manage tensor in midlfhe parametrization 2021-09-06 10:26:40 +02:00
Quentin Bourgerie
af0789f128 enhance(compiler/runtime): Add runtime tools to handle tensor inputs and outputs 2021-09-06 10:26:40 +02:00
Quentin Bourgerie
dba76a1e1b enhance(compiler): Add tensor ops type rewriting on high level pipepline 2021-09-06 10:26:40 +02:00
Quentin Bourgerie
6ac882fc65 fix(compiler/capi): Remove the memref for error and no more bare pointer call convention 2021-09-06 10:26:40 +02:00
Quentin Bourgerie
bc975d904e feat(compiler): introduce bufferization passes in lowering pipeline to llvm 2021-09-06 10:26:40 +02:00
Quentin Bourgerie
19704b4b13 fix(compiler/lowlfhe): Use the lwe ciphertext parameters to allocate instead of global fhe context 2021-08-24 16:29:04 +02:00
Quentin Bourgerie
4ae00963ac cleanup: Remove unused import 2021-08-24 16:21:31 +02:00
Quentin Bourgerie
67f0fc0f45 enhance(compiler): Introduce MidLFHE dag parametrization 2021-08-24 16:21:31 +02:00
Quentin Bourgerie
70fb5fcd8e fix(compiler/midlfhe): Change constraint on operators with integers (just too large integers are forbidden) 2021-08-24 16:21:31 +02:00
Quentin Bourgerie
8057ee7553 refactor(compiler): Prepare the MidLFHE parameters injection 2021-08-24 16:21:31 +02:00
youben11
f948db1228 feat(python): CompilerEngine to compile and run 2021-08-18 17:38:46 +02:00
Quentin Bourgerie
5613c69602 cleanup(compiler): Remove debug logs... 2021-08-18 17:06:28 +02:00
Quentin Bourgerie
fa62e1f0e5 refactor(compiler): Move memref HLFHE and MidLFHE operators to tensor 2021-08-18 11:15:30 +02:00
Quentin Bourgerie
7372cd3d0a fix(compiler/hlfhe): More verification on dot_eint_int 2021-08-17 16:53:32 +02:00
Andi Drebes
8b9c9f2da1 refactor(compiler): HLFHE.dot_eint_int: Switch from reference to value semantics
This changes the semantics of `HLFHE.dot_eint_int` from memref-based
reference semantics to tensor-based value semantics. The former:

  "HLFHE.dot_eint_int"(%arg0, %arg1, %arg2) :
     (memref<Nx!HLFHE.eint<0>>, memref<Nxi32>, memref<!HLFHE.eint<0>>) -> ()

becomes:

  "HLFHE.dot_eint_int"(%arg0, %arg1) :
     (tensor<Nx!HLFHE.eint<0>>, tensor<Nxi32>) -> !HLFHE.eint<0>

As a side effect, data-flow analyses become much easier. With the
previous memref type of the plaintext argument it is difficult to
check whether the plaintext values are statically defined constants or
originate from a memory region changed at execution time (e.g., for
analyses evaluating the impact on noise). Changing the plaintext type
from `memref` to `vector` makes such analyses significantly easier.
2021-08-17 16:53:32 +02:00
Quentin Bourgerie
8796754513 fix(compiler/lowlfhe): Fix wrong shift value for EncodeIntOp lowering
That's work before because we enfoce 6 as global constraint while our runJit tests are on 7 bits
2021-08-16 18:54:56 +02:00
Quentin Bourgerie
ed7dd36e70 fix(compiler): Remove the type conversion workaround, actually the order of addConversion calls matters (lifo) 2021-08-16 18:54:56 +02:00
Quentin Bourgerie
42f12b22da fix(compiler): move the midlfhe to lowlfhe pass to the right place 2021-08-16 18:54:56 +02:00
Quentin Bourgerie
f45abce604 feat(compiler): More lowlfhe operators conversion to mlir std dialects 2021-08-16 18:54:56 +02:00
Quentin Bourgerie
03297fd50d fix(compiler/lowlfhe): for the v0 give the lweSize of ciphertext as a global parameter of the lowering pass to concrete api call (#62) 2021-08-16 18:54:56 +02:00
Quentin Bourgerie
b22f585380 feat(compiler): First draft of lowering from LowLFHE to std with fct call (#62) 2021-08-16 18:54:56 +02:00
Quentin Bourgerie
d0877536ed feat(compiler): First draft of client parameters generation, runtime support for encrypting and decrypting circuit gates, integration of fhe parameters for the v0 (#65, #66, #56) 2021-08-13 14:05:29 +02:00
youben11
4d3c7a68de feat(compiler): MidToLowLFHE lowering 2021-08-12 13:48:51 +01:00
youben11
3d8d5c438a refactor(compiler): generalize LinalgGenericPattern
also fixes an issue regarding populateWithGenerated, which can be
duplicated across different pattern files. So I redefined a different
function that is more unique to the pass that should be ran, and hide
the populateWithGenerated from the global namespace
2021-08-12 13:48:51 +01:00
Ayoub Benaissa
7a2511b3d4 feat(compiler): LowLFHE dialect (#77)
* feat(compiler): low level fhe dialect

* feat(compiler): using generated printer/parser in LowLFHE

* feat(compiler): new types and ops for LowLFHE

* tests(compiler): LowLFHE types and ops

* feat(compiler): fill ops

* cleanup

* summary + description

* tests(compiler): use new CLI args

* formatting
2021-08-05 14:32:46 +01:00
Quentin Bourgerie
b4e57984b1 feat(compiler): Add passes to lower mlir to mlir llvm ir and run jit and emit llvm code (#63) 2021-08-05 13:43:08 +01:00
Quentin Bourgerie
4e6579e019 feat/refactor(compiler): Add --passes options to activate only a subset of passes (#57) 2021-08-04 14:03:05 +02:00
Quentin Bourgerie
1605551f1a feat(compiler): HLFHEToMidLFHE pass (#57) 2021-08-04 14:03:05 +02:00
Quentin Bourgerie
ed40b1ef91 feat(compiler): Add HLFHE.sub_int_eint (#54) 2021-08-03 09:23:11 +02:00
Quentin Bourgerie
143a2384fd enhance(compiler): Add verifier of HLFHE operators 2021-08-03 09:23:11 +02:00
Quentin Bourgerie
cb635f8a55 feat(compiler): HLFHE.apply_lookup_table (#54) 2021-08-03 09:23:11 +02:00
Quentin Bourgerie
ea77ee696a enhance(compiler): Add verify for HLFHE.eint, precision ]0;7] (#54) 2021-08-03 09:23:11 +02:00
Quentin Bourgerie
3c326c09d6 clean(compiler): Remove unecessary operators for compiler v0 (#54) 2021-08-03 09:23:11 +02:00
Quentin Bourgerie
be62755401 fix(compiler): Fixing MidLFHE Dialect for the compiler v0 2021-07-29 09:53:45 +02:00
Ayoub Benaissa
ab53ef71c6 feat(compiler): Python bindings (#53)
- feat(compiler): python bindings
- build: update docker image for python bindings
- pin pybind11 to 2.6.2, 2.7 is not having correct include_dirs set (still
a question why?)
- using generated parser/printer
2021-07-28 15:58:51 +01:00