Quentin Bourgerie
2cc72dd721
test(compiler): Fix end to end test we loss the 7 bits
2021-09-27 13:37:11 +02:00
youben11
3feab09c88
test(LUT): random function
2021-09-27 13:37:11 +02:00
youben11
967fda07a0
feat(execution): run on both int and tensor args
2021-09-10 10:00:04 +01:00
Quentin Bourgerie
c37ac41c1a
test(compiler): LowLFHEUnpametrize
2021-09-09 20:57:18 +02:00
youben11
d0e71dd4f1
fix: use IndexType for size of LWE allocation
2021-09-09 20:35:28 +02:00
youben11
746d991af6
refactor: ins forward decl w generic ty @pass-init
...
Insert forward declarations with generic types at pass initialization.
More docs for all the pass for lowering LUT
2021-09-09 20:35:28 +02:00
youben11
d97512f507
tests: remove RunJit tests
...
It's better to have execution tests as unittest (that we have now),
better control of the execution than just MLIR.
2021-09-09 20:35:28 +02:00
youben11
3893ad39bb
fix: divide and round to decode decrypted ct
...
Doing a right shift will ommit the bits that can be used to round to the
nearest integer
2021-09-09 20:35:28 +02:00
youben11
272a725e9a
feat(lower_LUT): add precision attribute to encode LUT at runtime
2021-09-09 20:35:28 +02:00
youben11
c4dd639ea7
tests(LUT): use relative error
2021-09-09 20:35:28 +02:00
youben11
1e07733257
fix(lower-LUT): keep output size of KS during lowering
...
output size of keyswiting wasn't set properly. As this information must
come from the selected parameters, it should goes down from the MidLFHE
to the appropriate call to ciphertext allocation
2021-09-09 20:35:28 +02:00
youben11
855dabc91e
tests: apply_univ complete lowering and execution
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
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
youben11
3b5ae0657d
feat: MidToLowLFHE lowering of apply_lut
2021-09-09 20:35:28 +02:00
youben11
b6c3eceadd
refactor: remove keys from BS and KS ops in LowLFHE
2021-09-09 20:35:28 +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
88d896cb64
refactor: Rename unittests
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
youben11
7850b359f3
chore(compiler): skeleton of unittest with gtest
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
ee9acf08e8
enhance(compiler/lowlfhe): Add p and size to lwe_ciphertext
2021-08-24 16:29:04 +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
youben11
f948db1228
feat(python): CompilerEngine to compile and run
2021-08-18 17:38:46 +02:00
Quentin Bourgerie
042f54afbf
fix(compiler/python): Update python test
2021-08-18 11:15:30 +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
7d6738916b
fix(compiler/pyhton): Update test dot_eint_int
2021-08-17 16:53:32 +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
Andi Drebes
cb580f16d2
feat(compiler): Add operation HLFHE.zero generating an encrypted zero
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
f45abce604
feat(compiler): More lowlfhe operators conversion to mlir std dialects
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
e401d9fb69
feat(compiler): update LowLFHE for MidLFHE lowering
...
-Encoding Cleartext to Plaintext Op
-Encoding Int to Plaintext Op
-Cleartext/Plaintext should add a bits field as `p`
-Op to create a constant Cleartext
-IntToCleartextOp: kind of casting an int to be later encoded, I'm not
sure if there is a better mechanism for this (e.g. auto casting in Ops),
but we currently need a way to encode int into plaintext, and we need to
go through cleartexts
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
6e86082807
test(compiler): Add testing for run-jit ( #63 )
2021-08-05 13:43:08 +01:00
youben11
0aa9f93e20
tests(python): compiler bindings. round_trip func
2021-08-05 13:49:29 +02: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