youben11
51c7b49144
ci: setup appropriate ENV for runtime lib
2021-09-09 20:35:28 +02:00
youben11
5f16cfabbf
fix(Runtime): link missing libraries
...
We currently use LD_PRELOAD with the python extension to make the JIT
execution find the appropriate symbols, however, not linking with some
libraries caused other tools such as make to complain of not finding
symbols from libpthread and others
2021-09-09 20:35:28 +02:00
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
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
d2a3214bba
clean(compiler): Return nullptr when conversion fails (should not happens but more safe in release mode) and remove dead code
2021-09-08 11:44:51 +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
15fd194075
fix(compiler): Since the patterns could be call in any order take care of already lowered types in mid to low conversion
2021-09-08 11:44:51 +02:00
Quentin Bourgerie
697d4033e1
fix(compiler): typo
2021-09-06 10:26:40 +02:00
Quentin Bourgerie
bfa4eece9d
chore(compiler): Add build target for e2e test
2021-09-06 10:26:40 +02:00
youben11
c3db68298e
fix: checking wrong state of the error
2021-09-06 10:26:40 +02:00
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