Commit Graph

839 Commits

Author SHA1 Message Date
Quentin Bourgerie
d1ddd60a23 fix: Fixing the MANP computation for conv2d (close #883) 2023-01-19 13:32:59 +01:00
Antoniu Pop
0329d4fc2d fix(gpu-wrappers): fix KS/BS wrappers for GPU (memory management). 2023-01-18 19:33:07 +00:00
tmontaigu
ddf905b4db chore(rust): impl std::error::Error for CompilerError
All types which are errors should impl
the std::error::Error trait.

So that for example they could be put inside
a `Box<dyn std::error::Error>`.
2023-01-18 09:55:47 +01:00
youben11
95d49f4657 feat: add boolean types/ops in FHE dialect 2023-01-18 09:13:26 +01:00
tmontaigu
7c19da974a chore(rust): remove 'get_' prefix from getters
In rust the convention/guideline for getters is not to prefix them with `get_`.

This commit changes any `get_` getter function to follow that guideline.

See the API Guidelines: https://rust-lang.github.io/api-guidelines/naming.html?highlight=getter#getter-names-follow-rust-convention-c-getter
2023-01-17 15:24:59 +01:00
tmontaigu
e1171cf55f chore(rust): mark BufferRef::new as unsafe 2023-01-17 15:24:52 +01:00
tmontaigu
6f0fbc8a3d feat(rust): add from_tensor_[u32|u16] 2023-01-15 22:57:31 +01:00
tmontaigu
c9f3983577 fix(rust): serialize functions take self by ref 2023-01-14 11:45:58 +01:00
tmontaigu
6348eda50e fix(rust): properly give an array of location to mlirBlockCreate
The MlirBlock constructor expects one location per input argument
of the block.
2023-01-13 20:18:06 +01:00
tmontaigu
d188cfae54 fix(rust): change tinfo linking to ncurses
- tinfo is a part of the ncurses project.
- tinfo does not seem easily installable stand alone
  (no brew install tinfo, no dnf install tinfo-devel, etc)
  but installing ncurses is possible and generally makes tinfo
  'findable'
- on macos (M1 mac) it seems that even with ncurses installed
  tinfo is not found, but linking to ncurses fixes the problem
2023-01-13 19:32:50 +01:00
tmontaigu
237c7eee9b fix: remove unused but set variable 2023-01-13 13:05:22 +01:00
rudy
456e1952f5 fix: not private side effect in woppbs wrapper
Fix #865
2023-01-12 17:15:26 +01:00
David Testé
ea5000aecb chore(ci) fix build on aws ec2
Use the right make rule target for testing the GPU and CPU.
2023-01-11 17:39:05 +01:00
youben11
91d41a2ff8 fix: add call to init dfr from python
Co-authored-by: Antoniu Pop <antoniu.pop@zama.ai>
2023-01-11 14:45:14 +01:00
tmontaigu
add68ccf84 fix(Makefile): update install target to work on macOS 2023-01-10 18:05:46 +01:00
rudy
d1cf650817 fix: overflow on high log norm2 2023-01-05 11:24:38 +01:00
rudy
bea7c6c1f6 fix: force a test to native encoding 2023-01-04 17:41:49 +01:00
rudy
80818bfc5d feat: use optimized private packing keyswitch 2023-01-04 17:41:49 +01:00
youben11
8c6a0859cd refactor(rust): add Rust wrapper for every CStruct
we want to wrap CStructs in RustStructs to own them, and free memeory
when they are no longer used. Users won't have to deal with the direct
binded CAPI, but the new wrappers
2023-01-02 12:10:14 +01:00
Antoniu Pop
aa2e0479b3 feat(compiler): add a parallel loop coalescing pass. 2023-01-02 12:04:34 +01:00
Quentin Bourgerie
4e53b83045 test: Report bug 846 introduced by loop coalesce 2023-01-02 12:04:34 +01:00
rudy
e17bbcbab5 fix: macos compiling issue with extra ; 2022-12-22 20:08:28 +01:00
rudy
a2c6763d80 fix: make all builds rust-bindings 2022-12-22 20:08:28 +01:00
rudy
f7533d47eb fix: --force-encoding crt 2022-12-22 12:16:58 +01:00
rudy
ed2adceafa test: tensorized test/bench rely on p-error 2022-12-14 09:21:18 +01:00
rudy
de779b2f6f fix: display compilation error in benchmark
the checking of llvm expected was not correct
2022-12-14 09:21:18 +01:00
rudy
bb756a6426 fix: default is global-error-probability=1/100_000 2022-12-14 09:21:18 +01:00
rudy
4ed0c01d8e feat(optimizer): option to disable optimizer cache
--optimizer-no-cache-on-disk
2022-12-13 18:54:40 +01:00
Quentin Bourgerie
d15c9822db fix(rust-bindings): Fix rust bindings after raise-encoding 2022-12-13 17:01:52 +01:00
Quentin Bourgerie
19fdbf652e fix(compiler): The crt loops are unary and should be init by a alloc_tensor 2022-12-13 17:01:52 +01:00
aPere3
2fd9b6f0e3 refactor(encodings): raise plaintext/lut encodings higher up in the pipeline 2022-12-13 17:01:52 +01:00
Antoniu Pop
7226c89cf1 enhance(compiler): coalesce loop nests before parallelization. 2022-12-13 15:23:29 +00:00
rudy
b742ac35ae fix(ci): force crt for 9, 10, 11 for table lookup 2022-12-13 13:21:30 +01:00
Andi Drebes
e2e6df322e feat(compiler): Add support for full unrolling of loops with SDFG-convertible ops
This adds a new option `--unroll-loops-with-sdfg-convertible-ops`,
which causes loops containing SDFG-convertible operations to be fully
unrolled upon the extraction of SDFG-operations using the
`--emit-sdfg-ops` switch. This avoids constant roundtrips between an
SDFG-capable accelerator and the host during execution of a loop.

The option is limited to `scf.for` loops with static bounds and a
static step size. Since full unrolling of loops with large bounds
results in a large number of operations, the option is disabled by
default.
2022-12-13 12:03:51 +01:00
Quentin Bourgerie
37c2627feb chore(ci): Regenerate the keyset cache 2022-12-12 10:38:44 +01:00
Quentin Bourgerie
607457d34a fix(compiler): CRT multiplication with negative value (close: #834) 2022-12-09 17:28:03 +01:00
Quentin Bourgerie
07aa334d8d chore(benchmarks): Refactor the benchmark tools 2022-12-09 09:51:23 +01:00
Antoniu Pop
fa1b2dc056 test(SDFG): add unit tests for SDFG and stream emulator. 2022-12-08 14:54:14 +01:00
Antoniu Pop
0dbb86bb36 feat(compiler): add lowering and bufferization for SDFG dialect, generate code to Stream Emulator API. 2022-12-08 14:54:14 +01:00
Antoniu Pop
752f0feb75 feat(runtime): add a stream emulator. 2022-12-08 14:54:14 +01:00
Andi Drebes
ee2f743a78 feat(compiler): Add new action dump-sdfg
Add a new action `dump-sdfg` to `concretecompiler` that causes the IR
to be dumpred right after the extraction of SDFG operations.
2022-12-08 14:54:14 +01:00
Andi Drebes
3da32560b7 feat(compiler): Add pass converting operations into SDFG processes
This adds a new pass `ExtractSDGOps`, which scans a function for
operations that implement `SDFGConvertibleOpInterface`, replaces them
with SDFG processes and constructs an SDFG graph around the processes.

Initialization and teardown of the SDFG graph are embedded into the
function and take place at the beginning of the function and before
the function's terminator, respectively.

The pass can be invoked using concretecompiler by specifying the new
compilation option `--emit-sdfg-ops` or programmatically on a
`CompilerEngine` using the new compilation option `extractSDFGOps`.
2022-12-08 14:54:14 +01:00
Andi Drebes
9ea6c0e8a3 enhance(compiler): Declare tensor-based BConcrete operations as side-effect-free 2022-12-08 14:54:14 +01:00
Andi Drebes
b7805f00d3 feat(compiler): Add op interface SDFGConvertibleOpInterface
This adds a new operation interface `SDFGConvertibleOpInterface` that
allows an operation to specify how it is converted to an SDFG
process. The interface consists of a single method `convert` that
receives as the arguments the DFG created using `SDFG.init`, a set of
SDFG input streams corresponding to the operands and a set of output
streams for results. The order of the input and output streams
corresponds to the order of the operands and output values,
respectively.
2022-12-08 14:54:14 +01:00
Andi Drebes
9f3615513b feat(compiler): Add new dialect SDFG for static data flow graphs
This adds a new dialect called "SDFG" for data flow graphs. An SDFG
data flow graph is composed of a set of processes, connected through
data streams. Special streams allow for data to be injected into and
to be retrieved from the data flow graph.

The dialect is intended to be lowered to API calls that allow for
offloading of the graph on hardware accelerators.
2022-12-08 14:54:14 +01:00
rudy
5516a55c1c feat: option to force cyphertext encoding 2022-12-08 14:42:25 +01:00
youben11
d7be50bb53 docs: update installation instructions 2022-12-08 07:45:55 +01:00
youben11
65235408bc chore: build rust package using install dir 2022-12-08 07:45:55 +01:00
youben11
8d063d299c chore: fix CAPI dependency
it is no longer needed by python only, so we want it to be built even
when python bindings are disabled
2022-12-08 07:45:55 +01:00
youben11
ff4a0076a1 ci: fix release tarball process
add install target in Makefile to copy necessary libs, bins, and
includes to an installation directory. Use this install target to
package deps into a tarball with new installation instructions.
2022-12-08 07:45:55 +01:00