Quentin Bourgerie
9ccc03b02f
fix(compiler/python): Fix api break
2021-09-06 10:26:40 +02:00
Quentin Bourgerie
be7301387c
chore: add then end-to-end-jit test to the make test target
2021-09-06 10:26:40 +02:00
Quentin Bourgerie
88d896cb64
refactor: Rename unittests
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
ce776c0eba
fix(compiler/lowlfhe): lwe_ciphertext as memref element type
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
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
ee9acf08e8
enhance(compiler/lowlfhe): Add p and size to lwe_ciphertext
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
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
96c50d5dca
fix/chore(docker/zamalang-env): Update to the latest concrete-api-env
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
Quentin Bourgerie
e290447389
chore(compiler): Get the concrete capi release
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
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
6e86082807
test(compiler): Add testing for run-jit ( #63 )
2021-08-05 13:43:08 +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
youben11
c58abe6565
chore(ci): add python testing
2021-08-05 13:49:29 +02:00
youben11
0aa9f93e20
tests(python): compiler bindings. round_trip func
2021-08-05 13:49:29 +02:00
youben11
30d33ee45f
feat(python): compiler api with round_trip func
2021-08-04 14:14:37 +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
youben11
59d9844bc2
chore(ci): update registry server url
2021-08-03 14:35:39 +01:00
youben11
89d16bbea7
chore(ci): update to GHCR to store mlir image
2021-08-03 14:23:15 +01:00
youben11
33f5911ac2
chore(ci): build zamalang image on push to master
2021-08-03 14:23:15 +01:00
youben11
3707f3a350
chore(ci): docker image for zamalang compiler
2021-08-03 08:53:26 +01: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