Commit Graph

245 Commits

Author SHA1 Message Date
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
youben11
7f31cec990 refactor: prefix ops and types with dialect name 2022-07-18 14:08:09 +01: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
fb219f0fbf feat(runtime): increase the limit of task input parameters to 16. 2022-06-28 17:11:12 +01:00
Umut
b3a2671dc7 feat: implement all kinds of subtractions 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
ef9d11c16f cleanup(compiler): Remove dead code and usless pass 2022-06-24 11:00:08 +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
Mayeul@Zama
928a44d243 chore(ci): enforce ending files with a newline 2022-06-16 17:04:25 +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
Andi Drebes
45577fb79e Rebase onto llvm-project f69328049e9e with local changes
This commit rebases the compiler onto commit f69328049e9e from
llvm-project.

Changes:

* Use of the one-shot bufferizer for improved memory management

* A new pass `OneShotBufferizeDPSWrapper` that converts functions
  returning tensors to destination-passing-style as required by the
  one-shot bufferizer

* A new pass `LinalgGenericOpWithTensorsToLoopsPass` that converts
  `linalg.generic` operations with value semantics to loop nests

* Rebase onto a fork of llvm-project at f69328049e9e with local
  modifications to enable bufferization of `linalg.generic` operations
  with value semantics

* Workaround for the absence of type propagation after type conversion
  via extra patterns in all dialect conversion passes

* Printer, parser and verifier definitions moved from inline
  declarations in ODS to the respective source files as required by
  upstream changes

* New tests for functions with a large number of inputs

* Increase the number of allowed task inputs as required by new tests

* Use upstream function `mlir_configure_python_dev_packages()` to
  locate Python development files for compatibility with various CMake
  versions

Co-authored-by: Quentin Bourgerie <quentin.bourgerie@zama.ai>
Co-authored-by: Ayoub Benaissa <ayoub.benaissa@zama.ai>
Co-authored-by: Antoniu Pop <antoniu.pop@zama.ai>
2022-06-14 14:35:25 +02:00
youben11
670af02112 fix: remove subinteint folder
it actually requires to negate the result which can't be done via
standard folder, so we remove it can cause erroneous computation
2022-06-14 10:00:01 +02:00
youben11
1354759884 chore: rename refs to main branch 2022-06-09 09:19:06 +01:00
youben11
5636342097 feat: add option to enable/disable optimization 2022-06-01 14:35:12 +01:00
youben11
8d0f20390c feat: optimize concrete mul with constant values 2022-06-01 14:35:12 +01:00
youben11
c42f0a1ada feat: add NoSideEffect trait to intToCleartext op
This would be useful for future pass to eliminate it when its result is
no longer used
2022-06-01 14:35:12 +01:00
youben11
8d04c1e4af feat: fold tensor ops with constant values
add/sub with constant tensors of 0s
mul with constant tensors of 1s
2022-05-30 08:35:14 +01:00
youben11
8aa6f3e809 feat: fold add/sub/mul with specific constant values
Remove add/sub with constant zero values
Remove mul with constant one values
2022-05-30 08:35:14 +01:00
Umut
b052157fae refactor: separate runtime context from public arguments 2022-05-30 10:19:14 +03:00
youben11
5f1a539505 feat(python): get path to diff artifacts
- path to client parameters file
- path to shared library
2022-05-09 16:18:21 +01:00
youben11
211241fcb2 refactor: store compil artifacts under a single dir 2022-05-09 16:18:21 +01:00
youben11
f223f02ab7 feat: parameterize artifact generation in lib compilation 2022-05-09 16:18:21 +01:00
rudy
1b70a38754 feat(optimizer): expose the p_error parameter
simplify the handling of options by relying more on CompilationOptions
2022-05-06 13:06:08 +02:00
Andi Drebes
f232935592 fix: Make functions in LambdaSupport.h purely virtual to avoid linking errors in debug builds
Some virtual functions in `LambdaSupport.h` are meant to be purely
virtual, but lack a `= 0` in their signature. In debug builds, this
causes the linker to look for a default implementation, resulting in a
linker error.

This patch marks the virtual functions as purely virtual, resolving
the linker issues in debug builds.
2022-05-04 22:06:00 +02:00
youben11
843dd0eb5b feat(python): seriliaze client parameters 2022-05-02 10:16:39 +02:00
rudy
923a1b58e1 feat(optimizer): plug online parameter estimation 2022-04-29 15:11:42 +02:00
youben11
e9345b3859 feat: serialize public result w/ python bindings 2022-04-22 15:53:26 +01:00
youben11
0a5881096c feat(python): serialize public arguments 2022-04-15 15:25:25 +01:00
youben11
d9d35c1023 refactor: use unique_ptr consistently for PublicArguments 2022-04-15 15:25:25 +01:00
youben11
c8ca318fde feat: throw clear error if DF jit-exec is not supported
was previously getting an undefined symbol error as the runtime lib
didn't support dataflow execution
2022-04-14 11:07:39 +01:00
Quentin Bourgerie
247d60503d fix(compiler): Custom copy op from 1D tensor to avoir stack allocation from mlir memref to llvm lowering 2022-04-13 10:16:53 +02:00
youben11
af300055a7 fix(macos): update dependency after compiling dylib
when dellocate is used to include dependencies in python wheels, the
runtime library will have an id that is prefixed with /DLC, and that path
doesn't exist. So when generated libraries won't be able to find it
during load time. To solve this, we change the dep in the generated
library to be relative to the rpath which should be set correctly during
linking. This shouldn't have an impact when /DLC/concrete/.dylibs/* isn't
a dependecy in the first place (when not using python).

also set rpath when linking to RT lib
2022-04-12 13:56:18 +01:00
Quentin Bourgerie
35d8489b9c fix(compiler/TFHE): Introduce bootstrap and keyswitch at the TFHE level 2022-04-12 09:37:56 +02:00
youben11
2ded4b6f43 fix: set rpath when linking using extra args 2022-04-06 08:43:44 +01:00
youben11
ec7d1232f1 feat: add runtimeLib link for library compilation
runtime library will be linked to compiled library
2022-04-04 11:52:23 +01:00
youben11
78def04fe5 refactor: rename [jit|library]lambdasupport to [jit|library]support 2022-04-04 09:15:31 +01:00
Antoniu Pop
0e38e0a48c feat(parallelization): enable OpenMP/loop parallelism as a compilation target independently of HPX/DFR. 2022-04-01 20:39:16 +01:00
Mayeul@Zama
9ccced7d93 fix(cmake): unify tablegen headers generation dependencies 2022-03-30 17:20:20 +02:00
youben11
ad79aa627f fix: don't pass ref to runtimeLibPath
We were keeping a reference to the path which led to its use after the
string was freed
2022-03-28 13:42:18 +01:00
Quentin Bourgerie
254b4dc530 enhance(compiler): Enable deallocation pass to free temporary buffers 2022-03-28 09:41:54 +02:00
Quentin Bourgerie
fc51b1d2ab fix(compiler): Activate the loop parallelism in ConcreteToBConcrete when the option is set 2022-03-28 09:41:27 +02:00
youben11
3a4723a0b8 feat: add FHELinalg.transpose operation 2022-03-24 16:04:57 +01:00
Quentin Bourgerie
c70ef1dcda fix(support): Use shared_ptr intead of raw ptr on JitLambdaSupport that allows the JitLambda to be used after that the compilation result is freed 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
0d376bc559 enhance(compiler): template result of typed vector from PublicResult 2022-03-24 11:00:36 +01:00