Commit Graph

827 Commits

Author SHA1 Message Date
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
Quentin Bourgerie
f552fa59e0 format: Cmake 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
2a89f62c1a fix(cuda): Include cuda_runtime.h in device.h to include the defininition of cudaStream_t 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
9cf506b0aa chore(tests): Add testing for gpu 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
351bab0bc9 chore(tests): Add a make target for testing gpu 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
735e78c141 chore(bench): Use batched concrete operators for gpu benchmarks 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
33a0d1b9e9 chore(bench): Add a first warmup call 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
3c616af622 feat(compiler): Handle batched operators for gpu codegen 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
312c9281eb chore(gpu): Fix gpu compilation 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
71b24b1255 chore(ci/bench): Generate gpu benchmarks 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
0602fe64ce chore(cuda): Update concrete-core to remove pedantic warning 2022-12-07 21:32:01 +01:00
David Testé
2c48bdd9fe test(benchmark): execute on-demand benchmarks with gpu backend
When this type of benchmarks is triggered, only the tests that
benefits from GPU acceleration are run on a specific AWS EC2
instance. Note that this instance (p3.2xlarge) is not a bare metal
one, so performance may variate due to hypervisor controlling the
machine.
2022-12-07 21:32:01 +01:00
Quentin Bourgerie
11cef2086d chore(cuda): Add concrete-core as submodule in order to integrate concrete-cuda as a cmake subproject 2022-12-07 21:32:01 +01:00