Commit Graph

3467 Commits

Author SHA1 Message Date
Miles
5d68424531 fix typos nightly-2024.04.12 2024-04-11 14:50:16 +02:00
Alexandre Péré
5537eb53de fix(frontends): add catch-all for exceptions 2024-04-11 14:49:24 +02:00
Bourgerie Quentin
f6308394b6 test(compiler): Test compress_input_ciphertext + simulation 2024-04-11 14:42:28 +02:00
Bourgerie Quentin
f6aa484ee2 fix(compiler): Do not use input ciphertext compression in simulation
close zama-ai/concrete-internal#656
2024-04-11 14:42:28 +02:00
Benoit Chevallier-Mames
ca7fb67d66 fix(compiler): fix the compilation doc 2024-04-11 14:38:52 +02:00
Andi Drebes
f506f5f7e3 test(compiler): Add check tests for pass hoisting RT.await_future operations nightly-2024.04.11 nightly-2024.04.10 2024-04-08 16:16:07 +02:00
Andi Drebes
7cf5483425 test(compiler): Add tests for tiling generating partial tiles 2024-04-08 16:16:07 +02:00
Andi Drebes
d620fa9a44 feat(compiler): Add pass hoisting RT.await_future out of scf.forall loops
The new pass hoists `RT.await_future` operations whose results are
yielded by scf.forall operations out of the loops in order to avoid
over-synchronization of data-flow tasks.

E.g., the following IR:

```
scf.forall (%arg) in (16)
  shared_outs(%o1 = %sometensor, %o2 = %someothertensor)
  -> (tensor<...>, tensor<...>)
{
  ...
  %rph = "RT.build_return_ptr_placeholder"() :
    () -> !RT.rtptr<!RT.future<tensor<...>>>
  "RT.create_async_task"(..., %rph, ...) { ... } : ...
  %future = "RT.deref_return_ptr_placeholder"(%rph) :
    (!RT.rtptr<!RT.future<...>>) -> !RT.future<tensor<...>>
  %res = "RT.await_future"(%future) : (!RT.future<tensor<...>>) -> tensor<...>
  ...
  scf.forall.in_parallel {
    ...
    tensor.parallel_insert_slice %res into %o1[..., %arg2, ...] [...] [...] :
      tensor<...> into tensor<...>
    ...
  }
}
```

is transformed into:

```
%tensoroffutures = tensor.empty() : tensor<16x!RT.future<tensor<...>>>

scf.forall (%arg) in (16)
  shared_outs(%otfut = %tensoroffutures, %o2 = %someothertensor)
  -> (tensor<...>, tensor<...>)
{
  ...
  %rph = "RT.build_return_ptr_placeholder"() :
    () -> !RT.rtptr<!RT.future<tensor<...>>>
  "RT.create_async_task"(..., %rph, ...) { ... } : ...
  %future = "RT.deref_return_ptr_placeholder"(%rph) :
    (!RT.rtptr<!RT.future<...>>) -> !RT.future<tensor<...>>
  %wrappedfuture = tensor.from_elements %future :
    tensor<1x!RT.future<tensor<...>>>
  ...
  scf.forall.in_parallel {
    ...
    tensor.parallel_insert_slice %wrappedfuture into %otfut[%arg] [1] [1] :
      tensor<1xRT.future<tensor<...>>> into tensor<16x!RT.future<tensor<...>>>
    ...
  }
}

scf.forall (%arg) in (16) shared_outs(%o = %sometensor) -> (tensor<...>) {
  %future = tensor.extract %tensoroffutures[%arg] :
    tensor<4x!RT.future<tensor<...>>>
  %res = "RT.await_future"(%future) : (!RT.future<tensor<...>>) -> tensor<...>
  scf.forall.in_parallel {
    tensor.parallel_insert_slice %res into %o[..., %arg, ...] [...] [...] :
      tensor<...> into tensor<...>
  }
}
```
2024-04-08 16:16:07 +02:00
Andi Drebes
fd513f1e6e feat(compiler): Add support for various memref operations for RT task bufferization
This adds support for `memref.alloc`, `memref.load`, `memref.store`,
`memref.copy` and `memref.subview` to the RT task bufferization pass.
2024-04-08 15:50:48 +02:00
Andi Drebes
999c9a9add feat(compiler): Add support for dynamically-sized memrefs in lowering patterns for RT tasks 2024-04-08 15:50:48 +02:00
Andi Drebes
3ad3dcb08f refactor(compiler): Use signature conversion for conversion of ops with nested blocks
The current scheme used by reinstantiating conversion patterns in
`lib/Conversion/Utils/Dialects` for operations with blocks is to
create a new operation with empty blocks, to move the operations from
the old blocks and then to replace any references to block
arguments. However, such in-place updates of the types of block
arguments leave conversion patterns for operations nested in the
blocks without the ability to determine the original types of values
from before the update.

This change uses proper signature conversion for block arguments, such
that the original types of block arguments with converted types is
preserved, while the new types are made available through the dialect
conversion infrastructure via the respective adaptors.
2024-04-08 15:50:48 +02:00
Andi Drebes
48d919bd25 feat(compiler): Add support for tensor.{from_elements,dim} operations in TFHE passes 2024-04-08 12:02:49 +02:00
Andi Drebes
0c7e3a3518 feat(compiler): Add support for nested Memrefs in memory usage estimator 2024-04-08 12:02:49 +02:00
Andi Drebes
f668e82f20 refactor(compiler): Make type conversion in RT task bufferization recursive 2024-04-08 12:02:49 +02:00
Andi Drebes
68d0014218 feat(compiler): Support non-ciphertext types in TFHE to Concrete conversion patterns
Some of the TFHE to Concrete conversion patterns implicitly assume
that operands are ciphertexts and thus that the converted types have a
higher number of dimensions than the original types. However, for
non-ciphertext types, the number of dimensions before and after the
conversion must be the same.

This commit adds a check to the respective conversion patterns
triggering a simple type conversion that preserves the number of
dimensions for non-ciphertext types.
2024-04-08 12:02:49 +02:00
Andi Drebes
9216c617e4 refactor(compiler): Make type conversion in TFHE global parametrization recursive 2024-04-08 12:02:49 +02:00
Andi Drebes
a855e2bef6 refactor(compiler): Make type conversion in scalar FHE to TFHE conversion recursive 2024-04-08 12:02:49 +02:00
Andi Drebes
74efe8be0a feat(compiler): Declare RT futures usable as element types for memrefs 2024-04-08 12:02:49 +02:00
Andi Drebes
93bb849233 refactor(compiler): Use reinstantiating conversion patterns for RT operations 2024-04-08 12:02:49 +02:00
Andi Drebes
6c1cef1fd3 refactor(compiler): Factor normalization of loop IVs from Batching-specific code
This introduces a new function `normalizeInductionVar()` to the static
loop utility code in `concretelang/Analysis/StaticLoops.h` with code
extracted for IV normalization from the batching code and changes the
batching code to make use of the factored function.
2024-04-08 12:02:49 +02:00
Andi Drebes
5c81882704 feat(compiler): Add new action dump-fhe-df-parallelized
This adds a new option `dump-fhe-df-parallelized` to
`concretecompiler` that dumps the IR after the generation of data-flow
tasks.
2024-04-08 12:02:49 +02:00
Andi Drebes
6b73879ead feat(compiler): Add support for tiling of FHELinalg.apply_lookup_table 2024-04-08 12:02:49 +02:00
dependabot[bot]
10bec8e492 chore(ci): bump tj-actions/changed-files from 43 to 44
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 43 to 44.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Commits](https://github.com/tj-actions/changed-files/compare/v43...v44)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
nightly-2024.04.09 nightly-2024.04.06 nightly-2024.04.05
2024-04-04 16:15:02 +02:00
dependabot[bot]
d701845cf1 chore(ci): bump docker/login-action from 2.1.0 to 3.1.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.1.0 to 3.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](f4ef78c080...e92390c5fb)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 15:57:44 +02:00
Alexandre Péré
14cebfc2a4 fix(frontends): add default configuration for fhe modules v2.6.0 2024-04-04 10:45:54 +02:00
Alexandre Péré
2eae0710ed docs(frontend): add documentation for fhe modules 2024-04-04 09:46:53 +02:00
Masato Tsutsumi
c838b7fdb6 fix(compiler): replace secret_seed with encryption_seed on client_support.py 2024-04-04 09:34:22 +02:00
Bourgerie Quentin
2db551b1dd docs(frontend-python): Documentation of compression features
Language edit by yuxizama

Co-authored-by: yuxizama <157474013+yuxizama@users.noreply.github.com>
2024-04-04 09:13:33 +02:00
rudy
aa3b4fa01f fix(frontend-python): bits with direct circuit, single bit is precision 1 nightly-2024.04.04 2024-04-03 17:36:55 +02:00
rudy
15b22918df fix(optimizer): bad variance on zero noise input on levelled op 2024-04-03 14:34:46 +02:00
yuxizama
9e82a04ce2 docs(frontend): update survey link v2.6.0-rc2 2024-04-03 10:27:45 +02:00
Yuxi Zhao
4b29b386d8 docs(frontend): fix broken links 2024-04-03 10:27:45 +02:00
yuxizama
6a8a5f73b9 docs(frontend): delete unused images 2024-04-03 10:27:45 +02:00
yuxizama
a3a35cf670 docs(frontend): delete unused images 2024-04-03 10:27:45 +02:00
yuxizama
d2e3107964 docs(frontend): delete unused images 2024-04-03 10:27:45 +02:00
yuxizama
feb24b7447 docs(frontend): delete unused images 2024-04-03 10:27:45 +02:00
yuxizama
54650d36c4 docs(frontend): delete unused images 2024-04-03 10:27:45 +02:00
yuxizama
b6a576a21c docs(frontend): delete unused images 2024-04-03 10:27:45 +02:00
yuxizama
17e3723e85 docs(frontend): add dark image for dark mode, update links 2024-04-03 10:27:45 +02:00
yuxizama
01e08c8ba7 docs(frontend): adjust font size 2024-04-03 10:27:45 +02:00
yuxizama
55abc61dbd docs(frontend): adjust font size 2024-04-03 10:27:45 +02:00
Yuxi Zhao
0a886c6382 docs(frontend): fix broken links 2024-04-03 10:27:45 +02:00
yuxizama
91e78a32de docs(frontend): fix a typo 2024-04-03 10:27:45 +02:00
Yuxi Zhao
92981dc1b5 docs(frontend): change page options 2024-04-03 10:27:45 +02:00
yuxizama
700581dd0b docs(frontend): adjust wording 2024-04-03 10:27:45 +02:00
yuxizama
0862cb29b1 docs(frontend): adjust designs 2024-04-03 10:27:45 +02:00
yuxizama
ce241a3d2a docs(frontend): adjust line spacing 2024-04-03 10:27:45 +02:00
yuxizama
24258eb5ba docs(frontend): add the developer survey 2024-04-03 10:27:45 +02:00
yuxizama
e85d65fa25 docs(frontend): upload new designs 2024-04-03 10:27:45 +02:00
rudy
9717ec583e fix(frontend-python): round_bit_pattern, prevent exactness argument misuse nightly-2024.04.03 2024-04-02 13:51:55 +02:00