Alexandre Péré
ba1d049d95
fix(compiler): increases deserialization limit for values
2024-04-18 14:22:51 +02:00
Bourgerie Quentin
f66dedaf29
docs(compiler): Add warnings about IND-CPA security model
2024-04-18 14:10:00 +02:00
Andi Drebes
a88968d8df
fix(compiler): Type inference rewriter: Fix use-after-free in function renaming
...
The type inference rewriter changes the name of the rewritten function
to the name of the original function when the rewriting process is
complete. However, the name is retrieved from the original function
operation after the operation has already been replaced and thus
destroyed, resulting in a null pointer dereference.
This change retrieves the name of the original function before it is
replaced and saves it in a copy, which is then used to safely assign
the new name to the rewritten function.
2024-04-17 09:55:10 +02:00
Umut
3d0727b845
feat(frontend-python): add option to configure tlu on original bit width
nightly-2024.04.17
nightly-2024.04.18
2024-04-16 16:45:05 +03:00
Alexandre Péré
34de883dd9
chore(frontends): add tests to increase coverage of fhe modules
2024-04-16 10:35:06 +02:00
Benoit Chevallier-Mames
a3762ab2cd
docs(compiler): fix broken links
...
closes #https://github.com/zama-ai/concrete-internal/issues/682
nightly-2024.04.16
2024-04-15 14:09:43 +02:00
Bourgerie Quentin
2d36bb1688
docs(frontend-python): Simplify and unify README and quick start example
2024-04-15 09:44:12 +02:00
Benoit Chevallier-Mames
6de9a388d2
docs(compiler): apply a fix by hand since bad link
2024-04-15 09:37:48 +02:00
Benoit Chevallier-Mames
2424352dbf
docs(compiler): update apidocs
2024-04-15 09:37:48 +02:00
Benoit Chevallier-Mames
689f2d3cca
docs(compiler): applying more minor fixes to the doc, for coherence
2024-04-15 09:37:48 +02:00
Antoniu Pop
7c59c64564
fix(ci): [distributed CI] fix workflow and move build/test outside docker (needed to run on multiple nodes).
nightly-2024.04.13
2024-04-12 09:56:30 +02:00
Antoniu Pop
2eb9c19de2
test(compiler): use mono parameters for dataflow/distributed tests until multi-parameter support is available.
2024-04-12 09:56:30 +02:00
Antoniu Pop
e16487e2c9
fix(compiler): create a copy of return memref for task work functions where the return is not allocated within the function. This is necessary to ensure deallocation cannot occur before the use.
2024-04-12 09:56:30 +02:00
Andi Drebes
204810580d
feat(compiler): Add support for tiling of optimizer.partition_frontier
2024-04-12 09:05:41 +02:00
Andi Drebes
fcfaaee2ef
feat(compiler): Add support for tiling of fhelinalg.transpose
2024-04-12 09:05:41 +02:00
Andi Drebes
12ab53ba92
refactor(compiler): Remove attribute "tile-sizes" from operations after tiling
...
The tiling infrastructure preserves attributes of tiled
`linalg.generic` operations, such that the attribute for the tile
sizes specified for the `linalg.generic` operation before tiling is
copied to the `linalg.generic` operation that is part of the generated
IR for a single tile.
This change causes the attribute to be removed after tiling, since it
does not make sense to preserve the attribute for per-tile operations.
2024-04-12 09:05:41 +02:00
Andi Drebes
a8231ce19f
feat(compiler): Add support for tiling of fhelinalg.sum
2024-04-12 09:05:41 +02:00
Andi Drebes
c6d2dfc916
feat(compiler): Add support for tiling of fhelinalg.apply_multi_lookup_table
2024-04-12 09:05:41 +02:00
Andi Drebes
46e28c648f
feat(compiler): Add support for tiling of fhelinalg.apply_mapped_lookup_table
2024-04-12 09:05:41 +02:00
Andi Drebes
58c1315205
feat(compiler): Copy tile sizes for all matmul ops when lowering to linalg.generic
...
For now, the attribute "tile-sizes" is copied from the FHELinalg
operation to the corresponding `linalg.generic` operation only for
multiplications of encrypted matrices with plaintext matrices.
The changes of this commit also cause the attribute to be copied for
multiplications between plaintext ad ciphertext matrices, as well as
for multiplications between two ciphertext matrices.
2024-04-12 09:05:41 +02:00
Andi Drebes
09a6702301
feat(compiler): Add support for tiling of element-wise FHELinalg operations
2024-04-12 09:05:41 +02:00
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