Commit Graph

225 Commits

Author SHA1 Message Date
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
Quentin Bourgerie
1422b575d0 fix(compiler): Remove custom llvm pipeline as it's not used 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
cc1e74d923 cleanup(compiler): Remove JitCompilerEngine 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
1620259807 cleanup(capi/python-bindings): Remove reference to JitCompilerEngine 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
5b83b700d2 enhance(compiler): Expose a compilation options instead of just the funcname 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
8867d313ee feat(python): Expose Jit and Library compiler support 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
f8968eb489 enhance(compiler/support): Refactor lambda support to have fatorized supoort for both lib and jit lambda 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
44b1e5bab2 fix(clientlib): Allow tensor with dimensions equals to 0 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
1ffd480d07 cleanup(compiler/jit): Removing dead code since the preparation of arguments has been factorized thanks the EncryptedArguments 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
0d1f041323 refactor(jit): Use PublicArguments instead of JitLambda::Argument to call the lambda (uniform calling to ServerLambda and JitLambda) 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
82741868f1 refactor(client/server): Rename encrypted_scalars_and_sizes_t o TensorData as it can be used for any kind of tensor 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
73da7da81c enhance(client/server): Don't decrypt directly from istream use a intermediate container to represent public result 2022-03-24 11:00:36 +01:00
Quentin Bourgerie
8961be33d2 fix(compiler): Remove the 7bits restriction on compiler side, it's the optimizer that known the truth 2022-03-22 12:38:58 +01:00
youben11
18f0ad77e7 fix: use new dfr api 2022-03-17 16:15:02 +01:00
Antoniu Pop
27318ff29a fix(runtime): disable main wrapping and provide _dfr_terminate new termination call for the runtime. 2022-03-17 16:15:02 +01:00
youben11
44ebd426f9 feat: setup init/termination of parallel execution in python 2022-03-17 16:15:02 +01:00
Antoniu Pop
2f31edef7f fix(runtime): add initialization guard to avoid double initialization/finalization of the runtime. 2022-03-17 16:15:02 +01:00
youben11
5b37ec640c feat: support parallelization in python 2022-03-17 16:15:02 +01:00
Mayeul@Zama
73bb1c03d8 enhance(compiler): fix warnings
remove unused signature, functions, variable
remove pessimizing-moves
add cast before comparison
2022-03-15 18:14:35 +01:00
Antoniu Pop
c440fc30f8 fix: CMake dependencies
define CONCRETELANG_PARALLEL_EXECUTION_ENABLED at toplevel and prevent RuntimeContext copy constructors from passing engines map.
2022-03-15 18:14:35 +01:00
Mayeul@Zama
ca8d4fb110 feat(compiler): use engine concrete C API
remove ConcreteToConcreteCAPI and ConcreteUnparametrize passes
2022-03-15 18:14:35 +01:00