Commit Graph

941 Commits

Author SHA1 Message Date
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
37ba62d713 format: exclude concrete-core 2022-12-07 21:32:01 +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
Quentin Bourgerie
90361f0b95 fix/chore: Remove custom gpu deleted target for tests 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
b9ea163704 test(bench/gpu): Activate loop parallelism for e2e benchmark of gpu 2022-12-07 21:32:01 +01:00
Quentin Bourgerie
792d46fa80 enhance(runtime/gpu): Cache keys copy to gpu 2022-12-07 21:32:01 +01:00
tmontaigu
f36e1fe882 feat(CAPI): use const ptrs to create tensor lambda arguments 2022-12-07 15:55:52 +01:00
tmontaigu
188642b153 chore(ci): add rustfmt check 2022-12-07 13:55:02 +01:00
rudy
f0457f74f2 fix: missing bench for 16bits tlu 2022-12-07 10:13:14 +01:00
David Testé
17479097b4 chore(ci): build compiler from pull request comment with slab
Now compiler builds on AWS can be requested in Pull Request comment
using '@slab-ci <build_command>'. This sets up environment to able
to trigger both CPU and GPU builds on AWS EC2.
2022-12-06 14:35:17 +01:00
youben11
788c4c863d ci: provide cuda tools in test docker image
build cuda image and copy cuda tools in test image to reduce its final
size
2022-12-06 11:29:11 +01:00
Quentin Bourgerie
ccb83cc9be chore(ci): Fix benchmark generation in CI 2022-12-06 09:30:50 +01:00
youben11
7d785eebec feat(rust): support serialization 2022-12-05 17:17:53 +01:00
youben11
fbc60097ab refactor(rust): resolve artifacts' path and better stringRef mgmnt 2022-12-05 17:17:53 +01:00
youben11
ad988de9a3 feat(CAPI): add CompilationFeedback API 2022-12-05 17:17:53 +01:00
rudy
75dd26d0ab feat: bench do not keygen on all keys 2022-12-05 13:57:54 +01:00
Quentin Bourgerie
07c1e8347e refactor(tests): Refactor test tools to easiest run tests with description files and different compilation options 2022-12-05 13:57:54 +01:00
rudy
1f7878b961 fix: LICENSE.txt ending newline 2022-12-05 12:35:26 +01:00
Quentin Bourgerie
4bcb21de63 chore(license): Update license to BSD3-clause-clear 2022-12-05 11:44:52 +01:00
Quentin Bourgerie
1f45b9dfa5 fix(compiler): Do not rely on the input type on ConcreteToBConcrete conversion as it could be already rewritten by a previous pattern (close #809) 2022-12-03 04:19:37 +01:00
youben11
f05b1bd1ea feat(rust): support execution with tensor args 2022-12-02 14:03:02 +01:00
youben11
16f3b0bbf6 feat(rust): manage erros coming from compiler
C struct now contains an additonal char* pointer, which can be either
NULL in case there is no error, or a buffer containing the error
message. It's the responsability of destructor function to free that
memory.
2022-12-02 14:03:02 +01:00
youben11
15b4aac0a1 feat(rust): support keygen, encryption, execution 2022-12-02 14:03:02 +01:00
youben11
7f55385ea2 feat(rust): load server lambda for later execution 2022-12-02 14:03:02 +01:00
youben11
b00115f4ae feat(rust): compile mlir into library
CAPI covering a wider API of the Support library.
Better error handling. Could also be improved by returning an error
message back from C to rust (left TODO).
2022-12-02 14:03:02 +01:00
Quentin Bourgerie
8a557368f1 chore(ci): Stay on ubuntu 20.4 for github runners to fix the release process 2022-12-01 23:18:34 +01:00
Quentin Bourgerie
b171bc3c48 chore(ci): Specify the python executable for running tests 2022-11-30 14:41:40 +01:00
Quentin Bourgerie
20b4479d0f chore(builders): Fix a specific tag for our many linux base image 2022-11-30 14:39:09 +01:00
Quentin Bourgerie
0f88dd4bcb fix(ci): Fixing mac os ci 2022-11-30 11:17:48 +01:00