Andi Drebes
46366eec41
feat(compiler): Add fallback implementations for batched keyswitch and bootstrap
...
Add default implementations for batched keyswitch and bootstrap, which
simply call the scalar versions of these operations in a loop.
2022-11-18 12:06:07 +01:00
rudy
018684fe2a
chore: activate Wall Werror
2022-11-04 10:44:46 +01:00
youben11
ef778ac75b
refactor: replace some operands by attrs in bs/ks
2022-10-20 10:36:32 +01:00
youben11
d615ff47f2
feat: support GPU keyswitching
2022-10-20 10:36:32 +01:00
youben11
a7a65025ff
refactor: redesign GPU support
...
- unify CPU and GPU bootstrapping operations
- remove operations to build GLWE from table: this is now done in
wrapper functions
- remove GPU memory management operations: done in wrappers now, but we
will have to think about how to deal with it later in MLIR
2022-10-20 10:36:32 +01:00
youben11
d169a27fc0
feat: support GPU (bootstrapping)
2022-10-20 10:36:32 +01:00
Umut
5f845bf9ff
feat: add axes argument to transpose
2022-10-17 10:46:03 +03:00
Quentin Bourgerie
0bc2e5830b
fix(optimization): Fix manp computation for addition with plaintext
2022-10-11 17:09:32 +02:00
rudy
637a004529
feat: use signed weights in optimizer dot
2022-10-10 10:48:47 +02:00
Quentin Bourgerie
090e0dbbca
fix(compiler): Fix maps with symbolic offsets in memref casts for wrapper functions
...
This reverts commit d9363ffb27 .
2022-10-07 09:16:19 +02:00
Quentin Bourgerie
cf9a36c197
feat(compiler/runtime): Support the pbs for crt encoding (enable apply_lookup_table up to 16bits)
2022-10-07 09:16:19 +02:00
rudy
e1fb417c54
fix(optimizer): no ceiling for MANP value given to the optimizer
2022-09-19 17:59:22 +02:00
Antoniu Pop
4fbb05e18c
feat(compiler): add an asynchronous interface for bootstrap and keyswitch using std::promise/future.
2022-09-19 13:02:20 +01:00
Antoniu Pop
2cf80e76eb
feat(compiler): move the lowering of dataflow tasks to RT dialect before bufferization.
2022-09-15 11:55:37 +01:00
Andi Drebes
d9363ffb27
fix(compiler): Use maps with symbolic offsets in memref casts for wrapper functions
...
The bufferization of the BConcrete dialect emits calls to Concrete
wrapper functions and casts all memrefs to ranked memrefs with dynamic
strides and an implicit identity layout map. The implicit identity map
does not allow for casts of memrefs with non-zero offsets, e.g.,
resulting from folding of memrefs related to intermediate results
passed as operands to the operation implemented by a wrapper.
Casting to memrefs symbolic offsets in the layout map (e.g.,
`[d0, d1, ...](s0, s1, ...) -> (d0 + s0, d1 + s1, ...)`) allows
for more flexibility, in particular this adds support for memrefs
with non-zero, constant offsets returned by operations generating
intermediate results.
2022-09-14 16:47:41 +02:00
Umut
41c9f86803
feat: create encrypted signed integer type
2022-09-09 17:38:21 +03:00
rudy
deef4486ba
fix: negative value have full complement 2 noise
...
Revert ae9a04cd56
2022-09-06 15:27:20 +02:00
Quentin Bourgerie
d9c9ecbf0b
fix(manp): Use the active bits to square a the constant in the 2-norm computation to allow more program to be analyzed
2022-08-25 09:46:51 +02:00
rudy
f3933aeddc
feat(optimizer): connect to new entry point supporting woppbs
2022-08-16 08:40:14 +02:00
Antoniu Pop
93802d128b
fix(dfr-compiler): clone memref task arguments using identity maps for serialization.
2022-08-12 16:35:11 +02:00
Quentin Bourgerie
8cd3a3a599
feat(compiler): First draft to support FHE.eint up to 16bits
...
For now what it works are only levelled ops with user parameters. (take a look to the tests)
Done:
- Add parameters to the fhe parameters to support CRT-based large integers
- Add command line options and tests options to allows the user to give those new parameters
- Update the dialects and pipeline to handle new fhe parameters for CRT-based large integers
- Update the client parameters and the client library to handle the CRT-based large integers
Todo:
- Plug the optimizer to compute the CRT-based large interger parameters
- Plug the pbs for the CRT-based large integer
2022-08-12 16:35:11 +02:00
rudy
cc6c2576ec
feat(optimizer): create optimizer dag and use it
2022-08-11 10:10:27 +02:00
Antoniu Pop
a2ff61d1d7
cleanup(compiler): remove no longer needed function getAliasedUses.
2022-08-04 17:06:09 +01:00
Antoniu Pop
f9ce4d046b
fix(testing-dfr): fix startup and ternimation call parameters to allow sequential test execution on root node when the runtime is instantiated for distributed execution.
2022-08-04 17:06:09 +01:00
Antoniu Pop
f541af8a8f
fix(compiler): use ViewLikeOpInterface instead of checking specific op types.
2022-08-04 17:06:09 +01:00
Antoniu Pop
f051642f1f
cleanup(compiler): rename getSizeInBytes function to match updated functionality.
2022-08-04 17:06:09 +01:00
Antoniu Pop
46b1dbcd34
cleanup(compiler): fix unused variable warning.
2022-08-04 17:06:09 +01:00
Antoniu Pop
20d19c2161
cleanup(dfr): remove unused key ids and unranked memref labels.
2022-08-04 17:06:09 +01:00
Antoniu Pop
da9dbcef1d
feat(compiler): coarsen task granularity by aggregating lightweight operations.
2022-08-04 17:06:09 +01:00
Antoniu Pop
ba60d74da0
feat(dfr): add timing measurements.
2022-08-04 17:06:09 +01:00
Antoniu Pop
1bb3d04059
fix(dfr): broadcast evaluation keys early to avoid locking in HPX helper threads.
2022-08-04 17:06:09 +01:00
Antoniu Pop
fbca52f4a0
feat(dfr): add memory management for futures and associated data.
2022-08-04 17:06:09 +01:00
Antoniu Pop
615109d432
fix(dfr): simplify initialization and add namespaces where possible.
2022-08-04 17:06:09 +01:00
Antoniu Pop
bca85ea2b6
feat(compiler): delay the point where futures are waited on, when they are being synchronized back to their parent context, to the point of use.
2022-08-04 17:06:09 +01:00
Antoniu Pop
954b2098c6
feat(runtime): enable distributed execution.
2022-08-04 17:06:09 +01:00
youben11
e52ccfc1a9
feat: support grouped conv2d
2022-08-04 11:19:18 +01:00
youben11
63d84a3e4a
refactor: remove code related to our custom conv2D named op
...
it was introduced as a workaround while linalng couldn't support other
types than int/float
2022-08-04 11:19:18 +01:00
Andi Drebes
85ebc0cb7a
Rebase onto llvm-project 3f81841474fe with patch for arbitrary types in linalg named ops
...
Rebase to llvm-project at 3f81841474fe with a pending upstream patch
for arbitrary element types in linalg named operations.
Co-authored-by: Ayoub Benaissa <ayoub.benaissa@zama.ai >
2022-07-27 22:45:38 +02:00
Quentin Bourgerie
511bcd99e7
Revert "feat(optimizer): create optimizer dag and use it"
...
This reverts commit 0b99f6d278 .
2022-07-27 18:35:47 +02:00
rudy
0b99f6d278
feat(optimizer): create optimizer dag and use it
2022-07-25 21:06:14 +02:00
Umut
e24dbec249
feat: create FHELinalg.from_element operation
...
This commit is introduced because python bindings for `tensor.from_elements` are not generated automatically. Previously, we overcame this with string manipulation, but with the latest version of the compiler, it became a problem. This commit should be reverted eventually. See https://discourse.llvm.org/t/cannot-create-tensor-from-elements-operation-from-python-bindings/4768 for the discussion in LLVM forums.
2022-07-08 14:43:46 +03:00
youben11
f4166a4973
docs: use consistent style for comment blocks
...
prefix comment blocks with ///
2022-07-07 16:11:19 +01:00
Antoniu Pop
261e59d2b4
feat(dfr): add more operations to be converted to tasks.
2022-06-28 17:11:12 +01:00
Antoniu Pop
26084a68aa
fix(compiler): delay all memref deallocation calls introduced by the bufferizer and that are made into futures until after the synchronization point.
2022-06-28 17:11:12 +01:00
Umut
b3a2671dc7
feat: implement all kinds of subtractions
2022-06-28 11:13:03 +03:00
Umut
8f8a57d220
feat: implement MANP calculation for tensor.insert op
2022-06-28 11:13:03 +03:00
Quentin Bourgerie
2de76e9c4e
fix(compiler): Fix tfhe global parametrization to handle k>1
...
Co-authored-by: Mayeul@Zama <mayeul.debellabre@zama.ai >
2022-06-24 15:35:51 +02:00
Quentin Bourgerie
acbb5bf17a
cleanup(compiler): Remove custom print and parse TFHE types
2022-06-24 11:00:08 +02:00
Quentin Bourgerie
9dd776533a
cleanup(compiler): Remove useless concrete types, simplify print and parse, and remove BConcreteToBConcreteCAPI pass
2022-06-24 11:00:08 +02:00
Andi Drebes
3b8ea630a1
refactor(compiler): Rename SubIntGLWEOp to SubGLWEIntOp
...
Rename `SubIntGLWEOp` to `SubGLWEIntOp` for a consistent naming scheme
of all TFHE ops.
2022-06-14 14:36:28 +02:00