Commit Graph

820 Commits

Author SHA1 Message Date
Ayoub Benaissa
f128982756 fix(docker): use bash as a shell
also uses directly the root home folder
2022-11-02 19:16:44 +01:00
Ayoub Benaissa
5269250908 fix(docker): add rust binary dir to PATH 2022-11-02 16:43:13 +01:00
youben11
e3e1602fe8 fix(ci): set python to 3.10 in macos test runner
default is now 3.11 which we don't support yet, mainly due to our
version of pybind11. 2.10.1 is the first pybind11 version to supports it
2022-11-02 14:46:38 +01:00
youben11
e40c6392cb ci: build and test rust bindings 2022-11-02 14:46:38 +01:00
youben11
0ac21fd037 feat: add rust bindings
The rust bindings are intented to access both LLVM/MLIR CAPI as well as
the concrete-compiler one. This initial commit provide the API for
LLVM/MLIR only. Tests should be used as an example to how to generate a
valid DAG of operations in MLIR.
2022-11-02 14:46:38 +01:00
rudy
0493030033 fix: typo DEFAULT_STRATEGY_V0 2022-11-02 09:33:37 +01:00
Antoniu Pop
746b7c2641 fix(dataflow build): fix HPX installation path when built and installed locally. 2022-10-25 09:50:51 +01:00
rudy
9156502a5a fix(ci): bump actions versions
to remove reprecation warning about nodejs 12
2022-10-24 15:08:54 +02:00
rudy
c684d658dc fix: use global p error for error rate test 2022-10-21 09:24:59 +02:00
Quentin Bourgerie
d934553950 feat(compiler/gpu): Integrate gpu crypto optimization 2022-10-20 10:36:32 +01:00
Quentin Bourgerie
a5047586f4 test(benchmark): Add more micro benchmarks on parallel lookup table 2022-10-20 10:36:32 +01:00
Quentin Bourgerie
f91514e7ff refactor(tests): Quick refactor of the test instantiation and include the gpu options for all e2e tests 2022-10-20 10:36:32 +01:00
Quentin Bourgerie
90fca9eb5e fix(runtime/gpu): Use the amortized version of the gpu boostrap as the parameter space of the lowlat one is too restrictive 2022-10-20 10:36:32 +01:00
youben11
48dee4a71b fix: create new op in generic type conversion
converting types of the original op seems to have an impact on other
operations using the result type, which should consider checking the
different cases (whether the type has been converted yet, or not).
However, creating a new op don't have this issue
2022-10-20 10:36:32 +01:00
youben11
ef778ac75b refactor: replace some operands by attrs in bs/ks 2022-10-20 10:36:32 +01:00
youben11
0eedbf4dc4 build(python): add opt to build with CUDA support
env variables can be set to build python wheels with CUDA support
2022-10-20 10:36:32 +01:00
youben11
bef178c528 build: find CUDAToolkit library path
requires setting min cmake version to 3.17
2022-10-20 10:36:32 +01:00
youben11
7cd45d1514 test: add GPU end2end tests 2022-10-20 10:36:32 +01:00
youben11
2383c5aec3 test: add gpu benchs 2022-10-20 10:36:32 +01:00
youben11
d615ff47f2 feat: support GPU keyswitching 2022-10-20 10:36:32 +01:00
youben11
7e08614e6c build: add options to build with CUDA support 2022-10-20 10:36:32 +01:00
youben11
a7a65025ff refactor: redesign GPU support
- unify CPU and GPU bootstrapping operations
- remove operations to build GLWE from table: this is now done in
  wrapper functions
- remove GPU memory management operations: done in wrappers now, but we
  will have to think about how to deal with it later in MLIR
2022-10-20 10:36:32 +01:00
youben11
d169a27fc0 feat: support GPU (bootstrapping) 2022-10-20 10:36:32 +01:00
Arthur Meyre
a487b03699 chore(ci): fix quoting on cp command 2022-10-18 12:02:57 +02:00
David Testé
d2b20ca551 ci(bench): fix end-to-end benchmarks workflow
This includes several fixes and add some functionalities:
 * EC2 instance type can be selected when workflow is triggered manually
 * benchmarks will be run on each push on main branch
 * docker is not used any more due to building issues
 * 10 repetitions are made during the benchmarks then results are aggregated
 * more tags are used to identify benchmarks configuration
2022-10-18 12:02:35 +02:00
Umut
5f845bf9ff feat: add axes argument to transpose 2022-10-17 10:46:03 +03:00
rudy
1d1dfc6b2b fix: display crypto-params global probability when it's not available 2022-10-14 09:00:35 +02:00
rudy
35d86c6093 fix: missing variance for packing keyswitch keys 2022-10-14 09:00:10 +02:00
Andi Drebes
60b00bdc91 fix(compiler): Fix excessive stack growth for IR embedding memref.copy in loops
This updates the llvm-project repository to a version containing a
patch that avoids excessive stack growth for programs whose IR
contains `memref.copy` operations in the bodies of loops with a high
trip count (e.g., `mnist_28_mlir_7b`).

This fixes Issue #669.
2022-10-12 11:19:41 +02:00
Andi Drebes
7aab560dd6 fix(ServerLib): Add missing dependency to mlir-headers
When building the ServerLib before any other concretelang target that
depends on `mlir-headers`, compilation fails due to missing include
files generated by tablegen, e.g., `llvm/IR/Attributes.inc`.

This adds a dependency from ServerLib to `mlir-headers`, which forces
the generation of the missing header files.
2022-10-11 17:09:47 +02:00
Andi Drebes
eae898b56f enhance(build): Add convenience targets LLVM / MLIR tools to toplevel Makefile
This adds four new targets `opt`, `mlir-cpu-runner`, `mlir-opt`, and
`mlir-translate` to the toplevel Makefile of the compiler to
conveniently build the corresponding LLVM / MLIR utilities (e.g., for
debugging purposes).
2022-10-11 17:09:47 +02:00
Arthur Meyre
4a3eca10bb chore(ci): fix quoting issue from jq command 2022-10-11 17:09:47 +02:00
Quentin Bourgerie
0bc2e5830b fix(optimization): Fix manp computation for addition with plaintext 2022-10-11 17:09:32 +02:00
Quentin Bourgerie
fe7cdf9d11 chore: Go back to rc.5 to fix the mac os CI 2022-10-10 12:30:27 +02:00
rudy
637a004529 feat: use signed weights in optimizer dot 2022-10-10 10:48:47 +02:00
Quentin Bourgerie
f2cbb1e719 chore: ./build as default build directory 2022-10-10 09:33:45 +02:00
youben11
0987fade80 fix: parameterize DATAFLOW_EXECUTION in python wheel 2022-10-07 16:59:34 +01:00
David Testé
89d7f065ae ci(compiler): schedule end-to-end benchmarks
Run end-to-end benchmarks on a weekly basis. Results are parsed and
then sent to Slab CI bot to be later plotted into Grafana.
2022-10-07 14:45:56 +02:00
Arthur Meyre
6ccbb8555c chore(ci): remove now useless workflow, remove ffi compilation 2022-10-07 13:44:20 +02:00
Arthur Meyre
9d3791bf96 chore: fix most actionlint and shellcheck lints 2022-10-07 09:49:00 +02:00
Arthur Meyre
9c744f7edd chore: fix repo setup instructions, update .gitignore 2022-10-07 09:49:00 +02:00
Quentin Bourgerie
090e0dbbca fix(compiler): Fix maps with symbolic offsets in memref casts for wrapper functions
This reverts commit d9363ffb27.
2022-10-07 09:16:19 +02:00
Quentin Bourgerie
cf9a36c197 feat(compiler/runtime): Support the pbs for crt encoding (enable apply_lookup_table up to 16bits) 2022-10-07 09:16:19 +02:00
Ayoub Benaissa
6a5e65631c chore: update concrete-ffi version
no major breaking changes, just enhancements
check https://github.com/zama-ai/concrete-core/releases
2022-10-06 12:48:17 +01:00
Mayeul@Zama
819da92e3a dep(optimizer): use options api from optimizer 2022-10-05 14:20:51 +02:00
Andi Drebes
e35c5bddcf fix(test): Add missing dependency from run-mlbench to generate-mlbench
The target `run-mlbench` indirectly depends on the contents of
`tests.ml/bench.zip` which are extracted by `generate-mlbench`. If
`generate-mlbench` has not been built pefore, `run-mlbench`
fails. This adds a the missing dependency from `run-mlbench` to
`generate-mlbench`.
2022-10-04 16:40:27 +02:00
Andi Drebes
55f843cd07 test(compiler): Fix comparison of ints with different signedness in unit test lib 2022-10-04 14:40:40 +02:00
Andi Drebes
85442f425d test(compiler): Move clear text tests to YAML test specification
This moves all tests from
`tests/end_to_end_tests/end_to_end_jit_clear_tensor.cc` to the test
specification in YAML format in
`tests/end_to_end_fixture/end_to_end_clear_tensor.yaml`. Parametric
tests and tests invoking lambdas in loops have been fully unrolled.
2022-10-04 14:40:40 +02:00
Andi Drebes
a7051c2c9c enhance(client/server): Add support for scalar results
This patch adds support for scalar results to the client/server
protocol and tests. In addition to `TensorData`, a new type
`ScalarData` is added. Previous representations of scalar values using
one-dimensional `TensorData` instances have been replaced with proper
instantiations of `ScalarData`.

The generic use of `TensorData` for scalar and tensor values has been
replaced with uses of a new variant `ScalarOrTensorData`, which can
either hold an instance of `TensorData` or `ScalarData`.
2022-10-04 14:40:40 +02:00
Andi Drebes
710dd7a88c enhance(compiler): Add function returning LambdaArgument type as string
This adds a new function `getLambdaArgumentTypeAsString(const
LambdaArgument&)` returning the name of a lambda argument type as a
string, e.g., `"uint8_t"` for an `IntLambdaArgument<uint8_t>` or
`"tensor<uint8_t>"` for a
`TensorLambdaArgument<IntLambdaArgument<uint8_t>>`.

Note that, due to the static inheritance scheme for Lambda Arguments
and explicit instantiation, this is only implemented for the common
backing integer types `uint8_t`, `int8_t`, `uint16_t`, `int16_t`,
`uint32_t`, `int32_t`, `uint64_t`, and `int64_t`.
2022-10-04 14:40:40 +02:00