Commit Graph

359 Commits

Author SHA1 Message Date
Quentin Bourgerie
3efa8eb2a9 refactor(tests): Use f-strings in linalg_apply_lookup_table generator 2022-11-30 10:02:07 +01:00
Quentin Bourgerie
6eb4cec706 fix(wopbs): Fixing woppbs with tensor operators (close #789)
- Missing offset in woppbs routine
- Better error message for check of tensor result in end to end fixture
- Modify fixture generator for testing purpose
2022-11-30 10:02:07 +01:00
Quentin Bourgerie
3bade6603a fix(compiler): Fix lowering of tensor.from_elements with crt 2022-11-24 16:30:37 +01:00
Quentin Bourgerie
5d89ad0f84 enhance(feedback): Add p_error and global_perror to the compiler feedback 2022-11-24 09:59:19 +01:00
Umut
722e4d2eba feat: give crt decomposition feedback 2022-11-24 09:59:19 +01:00
Andi Drebes
fd362342f5 fix(compiler): Batching: Emit collapse/expand shape operations only for rank > 1
The batching pass passes operands to the batched operation as a flat,
one-dimensional vector produced through a `tensor.collapse_shape`
operation collapsing all dimensions of the original tensor of
operands. Similarly, the shape of the result vector of the batched
operation is expanded to the original shape afterwards using a
`tensor.expand_shape` operation.

The pass emits the `tensor.collapse_shape` and `tensor.expand_shape`
operations unconditionally, even for tensors, which already have only
a single dimension. This causes the verifiers of these operations to
fail in some cases, aborting the entire compilation process.

This patch lets the batching pass emit `tensor.collapse_shape` and
`tensor.expand_shape` for batched operands and batched results only if
the rank of the corresponding tensors is greater than one.
2022-11-21 14:53:43 +01:00
David Testé
3c2a75186f chore(ci): run ml benchmarks in a matrix with slab
This CI "feature" is meant to circumvent the 6 hours hard-limit
for a job in GitHub Action.
The benchmark is done using a matrix which is handled by Slab.
Here's the workflow:

  1. ML benchmarks are started in a fire and forget fashion via
     start_ml_benchmarks.yml
  2. Slab will read ci/slab.toml to get the AWS EC2 configuration
     and the matrix parameters
  3. Slab will launch at most max_parallel_jobs EC2 instances in
     parallel
  4. Each job will trigger ml_benchmark_subset.yml which will run
     only one of the generated YAML file via make generate-mlbench,
     based on the value of the matrix item they were given.
  5. As soon as a job is completed, the next one in the matrix
     will start promptly.

This is done until all the matrix items are exhausted.
2022-11-21 11:25:40 +01:00
Quentin Bourgerie
8e4be10eb9 chore(bench): Better number of ct for benchmarks 2022-11-21 11:18:23 +01:00
Mayeul@Zama
0657767bae style(cmake): run format_cmake.sh 2022-11-18 15:15:41 +01:00
Andi Drebes
84e0742fbe test(compiler): Add check tests for batching pass 2022-11-18 12:06:07 +01:00
Andi Drebes
ef26c73cb8 test(compiler): Add end-to-end test for batched operations
This adds a new end-to-end test `apply_lookup_table_batched`, which
forces batching of Concrete operations when invoking the compiler
engine, indirectly causing the `concrete.bootstrap_lwe` and
`concrete.keyswitch_lwe` operations generated from the
`FHELinalg.apply_lookup_table` operation of the test to be batched
into `concrete.batched_bootstrap_lwe` and
`concrete.batched_keyswitch_lwe` operations. The batched operations
trigger the generation of calls to batching wrapper functions further
down the pipeline, effectively testing the lowering and implementation
of batched operations altogether.
2022-11-18 12:06:07 +01:00
Antoniu Pop
c5ceccaeee tests: disable dataflow tests when compiler not built with dataflow support. 2022-11-17 16:37:44 +00:00
rudy
76c58c6305 fix: optimizer AST update 2022-11-16 11:44:46 +01:00
rudy
1bce0f3c01 fix: error rate test, no p_error overriding global_p_error 2022-11-14 11:08:18 +01:00
Quentin Bourgerie
84041557ab enhance(bench): Add benchmark generator for leveled operators 2022-11-08 14:27:30 +01:00
Quentin Bourgerie
0787eeb7e9 fix(bench): Fix linalg apply_lookup table generator that didn't well print separator 2022-11-04 15:42:46 +01:00
Quentin Bourgerie
ec0f49431b chore(bench): Rename default options to cpu 2022-11-04 11:03:19 +01:00
Quentin Bourgerie
46ec919abf fix(bench): Compiler options was badly set 2022-11-04 11:03:19 +01:00
rudy
018684fe2a chore: activate Wall Werror 2022-11-04 10:44:46 +01:00
David Testé
d1db4a5e45 tests(benchmarks): reduce number of test cases to speed-up execution
Bench just one compilation option for automatic benchmarks. Only 'loop'
option is tested to take advantage of hardware with a lot of available
CPUs. Running benchmarks with 'default' option is suboptimal for this
kind of hardware since it uses only one CPU.

This also remove time consuming MNIST test, as it should be in ML benchmarks.

Moreover Makefile is fixed to use provided Python executable instead of
relying on system one to generate MLIR Yaml files.
2022-11-03 19:07:39 +01:00
rudy
c684d658dc fix: use global p error for error rate test 2022-10-21 09:24:59 +02: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
youben11
ef778ac75b refactor: replace some operands by attrs in bs/ks 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
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
Umut
5f845bf9ff feat: add axes argument to transpose 2022-10-17 10:46:03 +03:00
Quentin Bourgerie
0bc2e5830b fix(optimization): Fix manp computation for addition with plaintext 2022-10-11 17:09:32 +02:00
rudy
637a004529 feat: use signed weights in optimizer dot 2022-10-10 10:48:47 +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
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
a5289a3145 enhance(tests): Add option use_default_fhe_constraints to YAML test descriptions
This adds a new optional boolean parameter
`use_default_fhe_constraints` to the YAML description of tests that
causes the test backend to use the default FHE constraints if set to
true. This is necessary for clear text tests, since automatic
determination of FHE parameters by the `CompilerEngine` fails for
programs not using encrypted integers and causes the program to abort.
2022-10-04 14:40:40 +02:00
Andi Drebes
7427a4506d test(compiler): Abort test if a stream for a YAML file is in a bad state
The code in `loadEndToEndDesc` attempts to load the contents of a YAML
file without ensuring that the stream from which the file is read was
set up correctly. As a result, streams in a bad state, e.g., if the
file to be opened does not exist, simply result in an empty string for
the file contents. The test driver cannot distinguish this result from
a valid YAML file that is simply empty.

This patch causes `loadEndToEndDesc` to abort execution whenever a
file input stream could not be set up correctly.
2022-10-04 14:40:40 +02:00
Andi Drebes
8255d3e190 fix(compiler): Add support for clear result tensors with element width != 64 bits
Returning tensors with elements whose width is not equal to 64 results
in garbled data. This commit extends the `TensorData` class used to
represent tensors in JIT compilation with support for signed /
unsigned elements of 8/16/32 and 64 bits, such that all clear text
tensors with up to 64 bits can be represented accurately.
2022-10-04 14:40:40 +02:00
rudy
cb2c9ef6bf feat: accept no evaluation keys 2022-09-26 14:43:25 +02:00
rudy
e1fb417c54 fix(optimizer): no ceiling for MANP value given to the optimizer 2022-09-19 17:59:22 +02:00
Antoniu Pop
55b719f100 feat(tests): add instantiation of end-to-end tests for each option sets. 2022-09-19 13:02:20 +01:00
Antoniu Pop
09184077d9 benchmarking: add YAML generator and ML benchmarks (see issue https://github.com/zama-ai/concrete-ml-internal/issues/1543). 2022-09-15 14:38:56 +01:00
Antoniu Pop
2cf80e76eb feat(compiler): move the lowering of dataflow tasks to RT dialect before bufferization. 2022-09-15 11:55:37 +01:00
Andi Drebes
26901a32da test(compiler): Test the bufferization of BConcrete with memrefs with non-zero offsets 2022-09-14 16:47:41 +02:00
Quentin Bourgerie
8c605a6267 test(keyset): Set a proper variance for encryp_decrypt test 2022-09-14 13:50:26 +02:00
Quentin Bourgerie
dbfde466bc feat(python): Add compilation feedback to the python bindings 2022-09-14 10:03:25 +02:00
Quentin Bourgerie
f4673e8276 feat(compiler): First draft or compilation feedback 2022-09-14 10:03:25 +02:00
rudy
32437af31b feat(test): check test error rate for fast cases 2022-09-12 17:29:03 +02:00
rudy
48bf6e2696 feat(optimizer): report or warn using global p-error 2022-09-12 17:22:38 +02:00
Umut
41c9f86803 feat: create encrypted signed integer type 2022-09-09 17:38:21 +03:00