Commit Graph

3381 Commits

Author SHA1 Message Date
Bourgerie Quentin
9dcf1c4b6f feat(frontend-python): Expose compress_input_ciphertexts as a compilation options and tests nightly-2024.03.13 2024-03-12 17:58:40 +01:00
Bourgerie Quentin
3043573922 refactor(compiler/tests): Move bug and boolean to specific yaml files 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
e0a7aaa479 test(compiler): Run all tests only on default options and run random tests on several options to tests 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
1804081064 refactor(compiler): Refactor options naming of the end-to-end-test tool 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
d3cb43b517 fix(compiler): Put dag-multi as default optimizer strategy 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
721858346a refactor(compiler): Just reorder options for better readability 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
2ac4f52ca5 feat(compiler/tests): Add random-tests options to end-to-end-test tool 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
6b4ce8889b feat(compiler): Add input ciphertext compression with seeded ciphertext 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
2d2e6d0519 fix(backend-cpu): Fix concrete_cpu_encrypt_seeded_lwe_ciphertext_u64 as the memory was not written 2024-03-12 16:57:06 +01:00
Bourgerie Quentin
11f1935119 fix(ci): Update path of auto-generated dialect documentation 2024-03-12 16:43:13 +01:00
Benoit Chevallier-Mames
c7fe6c83d2 docs(frontend): be clearer on docker use and its current limit for Apple silicon 2024-03-12 16:33:09 +01:00
Yuxi Zhao
a0195cf315 docs(frontend): update new structure and landing page nightly-2024.03.12 2024-03-11 18:55:50 +01:00
Bourgerie Quentin
ce74903c1d fix(frontends): Fixing tests which rely on cmdline not on configuration 2024-03-11 16:51:05 +01:00
Bourgerie Quentin
0fdc7d78ff perf(compiler): Use parallel implementation to decompress bs and ks keys 2024-03-11 16:51:05 +01:00
Bourgerie Quentin
23a521e5d1 chore(ci): Test default configuration on python CI tests 2024-03-11 16:51:05 +01:00
Umut
aad659f160 feat(frontend-python): random inputset generator 2024-03-11 09:05:27 +01:00
Andi Drebes
32199292bb test(frontend-python): Re-enable min / max tests for multi-parameter optimization nightly-2024.03.09 2024-03-07 15:42:26 +01:00
Andi Drebes
b9589146f4 test(compiler): Add tests generating explicit optimizer partition frontiers 2024-03-07 15:42:26 +01:00
Andi Drebes
9b6878316f fix(compiler): Preserve explicit optimizer partition boundaries through the pipeline
The Concrete Optimizer is invoked on a representation of the program
in the high-level FHELinalg / FHE Dialects and yields a solution with
a one-to-one mapping of operations to keys. However, the abstractions
used by these dialects do not allow for references to keys and the
application of the solution is delayed until the pipeline reaches a
representation of the program in the lower-level TFHE dialect. Various
transformations applied by the pipeline along the way may break the
one-to-one mapping and add indirections into producer-consumer
relationships, resulting in ambiguous or partial mappings of TFHE
operations to the keys. In particular, explicit frontiers between
optimizer partitions may not be recovered.

This commit preserves explicit frontiers between optimizer partitions
as `optimizer.partition_frontier` operations and lowers these to
keyswitch operations before parametrization of TFHE operations.
2024-03-07 15:42:26 +01:00
Andi Drebes
a701b3a742 feat(compiler): Add support for tensor.empty in the pipeline from FHE to std 2024-03-06 14:50:27 +01:00
Andi Drebes
8e660e2f75 feat(compiler): Add dialect with operations related to the optimizer
This adds a new dialect called `Optimizer` with operations related to
the Concrete Optimizer. Currently, there is only one operation
`optimizer.partition_frontier` that can be inserted between a producer
and a consumer which belong to different partitions computed by the
optimizer. The purpose of this operation is to preserve explicit key
changes from the invocation of the optimizer on high-level dialects
(i.e., FHELinalg / FHE) until the IR is provided with actual
references to keys in low-level dialects (i.e., TFHE).
2024-03-06 14:50:27 +01:00
Andi Drebes
3d16efb681 feat(compiler): Add functions for type inference debugging to TypeInferenceUtils
The main debugging function is
`TypeInferenceUtils::dumpAllState(mlir::Operation* op)` which dumps
the entire state of type inference for the function containing `op`.
2024-03-06 14:50:27 +01:00
Andi Drebes
282cacaef4 fix(compiler): Do not omit assignment of optimizer ID to FHE.reinterpret_precision
The DAG pass establishing a mapping between operations in the IR and
the optimizer DAG currently omits assignment of the optimizer ID to
`FHE.reinterpret_precision` operations via the `TFHE.OId`
attribute. This prevents subsequent passes from determining to which
optimizer partition a `FHE.reinterpret_precision` operation belongs.

This commit removes the early exit in `FunctionToDag::addOperation`
for the handling of `FHE.reinterpret_precision` that prevented the
code assigning the optimizer ID from being executed.
nightly-2024.03.08
2024-03-06 14:50:27 +01:00
rudy
d3e70c483f chore(frontend-python): use compression for tests to solve the missing space issue nightly-2024.03.07 2024-03-06 14:43:40 +01:00
Bourgerie Quentin
7651cb1129 fix(compiler): Guard decompression of seeded keys to avoid access conflicts in parallel programs 2024-03-06 14:43:40 +01:00
Umut
760e5ef02a feat(frontend-python): support additional pre and post processors instead of just post processors 2024-03-06 12:27:08 +01:00
Umut
bf548b0738 feat(frontend-python): expose integer dtype from the main module 2024-03-06 12:27:08 +01:00
Benoit Chevallier-Mames
089b5e8d6c docs(compiler): reorganize the doc nightly-2024.03.06 nightly-2024.03.05 2024-03-04 17:48:16 +01:00
Benoit Chevallier-Mames
68cada3963 docs(frontend): add a tutorial about XOR distance 2024-03-04 16:14:14 +01:00
rudy
05bd8cc5f2 feat(frontend-python): approximate mode for round_bit_pattern nightly-2024.03.02 2024-03-01 16:04:11 +01:00
Alexandre Péré
9b5a2e46da feat(compiler): support multi-circuit compilation 2024-03-01 15:35:52 +01:00
Umut
3247a28d9d feat(frontend-python): additional graph processors nightly-2024.02.29 nightly-2024.02.28 nightly-2024.02.27 nightly-2024.03.01 2024-02-26 19:09:13 +03:00
Antoniu Pop
bda568ab6b feat(compiler): distributed execution - on-demand key transfer to remote nodes. nightly-2024.02.24 2024-02-23 13:55:52 +00:00
Antoniu Pop
e67aa9b499 feat(compiler): upgrade HPX library version to 1.9.1. 2024-02-23 11:47:37 +00:00
Antoniu Pop
da1f30023f feat(compiler): upgrade HPX library version to 1.9.1. 2024-02-23 10:31:18 +00:00
rudy
2f7d3ff2cc chore(frontend-python): private release tests nightly-2024.02.23 nightly-2024.02.22 2024-02-21 17:11:15 +01:00
rudy
1a4de9beae fix(frontend-python): declare graphviz pytest mark 2024-02-21 17:08:58 +01:00
rudy
da2134337e fix(frontend-python): package test should not install graphviz on macos 2024-02-21 17:08:58 +01:00
rudy
de0af6638c fix(frontend-python): package test should install extra requires on linux 2024-02-21 14:07:47 +01:00
rudy
e1d7be02c6 fix(frontend-python): macos os tests without graphviz nightly-2024.02.21 2024-02-20 17:23:58 +01:00
Umut
29503dfc17 feat(compiler): fusing table lookups 2024-02-20 12:39:57 +01:00
Umut
efc9314d25 fix(frontend-python): stop crashing on scalar squeeze 2024-02-20 12:37:48 +01:00
Umut
565e6f2796 feat(frontend-python): identity extension 2024-02-20 12:37:48 +01:00
Bourgerie Quentin
22bbdec086 fix(ci/compiler): Remove KeySetCache directory on mac os CI to avoid space disk issues 2024-02-20 09:17:13 +01:00
Alexandre Péré
c53985f112 fix(compiler): fix double free on aliased outputs nightly-2024.02.20 2024-02-19 16:14:12 +01:00
rudy
b324ca8391 fix(frontend-python): bitwise tests coverage nightly-2024.02.17 2024-02-16 13:47:38 +01:00
rudy
9fdb959beb fix(frontend-python): failure to display invalid input set value nightly-2024.02.16 2024-02-15 17:13:05 +01:00
yuxizama
34628ec6c5 docs(common): Update Readme.md structure nightly-2024.02.15 2024-02-14 15:31:10 +01:00
Alexandre Péré
d1b62462f2 fix(compiler): fix mac arm exception propagation
On Mac arm, the c api backing the python bindings does not propagate the
exceptions properly to the concretelang python module. This makes all
exceptions raised through `CompilerEngine.cpp` fall in the catch-all
case of the pybind exceptions handler.

Since there is no particular need for a public c api, we just remove it
from the bindings, and move all the content of `CompilerEngine.cpp`
directly in the `CompilerAPIModule.cpp` file.
2024-02-14 15:08:19 +01:00
Bourgerie Quentin
a654e68eab chore(ci): Update cuda version nightly-2024.02.14 2024-02-13 17:02:46 +01:00