Commit Graph

29 Commits

Author SHA1 Message Date
Quentin Bourgerie
175b568e91 chore(frontend-python): Run minimal tests on macos and gpu 2024-11-29 14:35:15 +01:00
Alexandre Péré
7402219247 fix(frontend): use python-3.8 compatible syntax 2024-10-07 08:45:33 +02:00
Alexandre Péré
d9b34f13d0 refactor(frontends): unify circuits and modules 2024-09-24 14:37:37 +02:00
Umut
7f31f6d1cc fix(frontend): get coverage back to 100 percent 2024-08-15 11:07:20 +02:00
Umut
bb52dbb48a feat(frontend): accept clear arguments in server.run 2024-08-12 17:20:08 +02:00
Umut
46c115ab35 feat(frontend): support configuration overrides for Server.load when via_mlir is used 2024-08-08 15:11:29 +02:00
Umut
5f2afc4c24 feat(frontend-python): simulate encrypt run decrypt option 2024-06-14 18:03:19 +03:00
aquint-zama
3740d38481 chore(frontend-python): update black dev dependency 2024-05-22 17:13:54 +02:00
Umut
3d338af27f feat(frontend-python): memory usage per location 2024-04-29 11:12:48 +02:00
Alexandre Péré
170002ff20 feat(frontend-python): add support for multi-circuits 2024-03-19 14:13:18 +01:00
rudy
e1d7be02c6 fix(frontend-python): macos os tests without graphviz 2024-02-20 17:23:58 +01:00
rudy
9fdb959beb fix(frontend-python): failure to display invalid input set value 2024-02-15 17:13:05 +01:00
Umut
037600112d feat(frontend-python): drawing 2024-01-23 11:42:26 +03:00
Umut
b4ed398549 fix(frontend-python): reduce the failure rate of setting keys test 2024-01-12 16:25:51 +03:00
Umut
d4cc79f10d test(frontend-python): add tests of assigning circuit.keys 2023-11-10 14:35:17 +01:00
Alexandre Péré
e8ef48ffd8 feat(compiler): introduce concrete-protocol
This commit:
 + Adds support for a protocol which enables inter-op between concrete,
   tfhe-rs and potentially other contributors to the fhe ecosystem.
 + Gets rid of hand-made serialization in the compiler, and
   client/server libs.
 + Refactors client/server libs to allow more pre/post processing of
   circuit inputs/outputs.

The protocol is supported by a definition in the shape of a capnp file,
which defines different types of objects among which:
 + ProgramInfo object, which is a precise description of a set of fhe
   circuit coming from the same compilation (understand function type
   information), and the associated key set.
 + *Key objects, which represent secret/public keys used to
   encrypt/execute fhe circuits.
 + Value object, which represent values that can be transferred between
   client and server to support calls to fhe circuits.

The hand-rolled serialization that was previously used is completely
dropped in favor of capnp in the whole codebase.

The client/server libs, are refactored to introduce a modular design for
pre-post processing. Reading the ProgramInfo file associated with a
compilation, the client and server libs assemble a pipeline of
transformers (functions) for pre and post processing of values coming in
and out of a circuit. This design properly decouples various aspects of
the processing, and allows these capabilities to be safely extended.

In practice this commit includes the following:
 + Defines the specification in a concreteprotocol package
 + Integrate the compilation of this package as a compiler dependency
   via cmake
 + Modify the compiler to use the Encodings objects defined in the
   protocol
 + Modify the compiler to emit ProgramInfo files as compilation
   artifact, and gets rid of the bloated ClientParameters.
 + Introduces a new Common library containing the functionalities shared
   between the compiler and the client/server libs.
 + Introduces a functional pre-post processing pipeline to this common
   library
 + Modify the client/server libs to support loading ProgramInfo objects,
   and calling circuits using Value messages.
 + Drops support of JIT.
 + Drops support of C-api.
 + Drops support of Rust bindings.

Co-authored-by: Nikita Frolov <nf@mkmks.org>
2023-11-09 17:09:04 +01:00
Bourgerie Quentin
894ed9ec9f test(frontend-python): Remove the high p_error in graph evaluation tests 2023-08-02 15:07:21 +02:00
Umut
ade83d5335 feat(compiler): add more detailed statistics 2023-08-01 18:40:08 +02:00
Umut
79b38a72ec feat(compiler): provide circuit statistics 2023-07-26 11:08:15 +02:00
Umut
e49c16873c refactor(frontend-python): use @fhe.compiler instead of importing it and doing @compiler 2023-07-26 11:08:15 +02:00
Umut
ee5fc138ab feat(frontend-python): lazily enable simulation and execution when needed 2023-06-30 16:08:28 +02:00
youben11
9f54184375 feat(frontend): simulate execution using the compiler 2023-06-27 14:21:42 +01:00
Umut
b0f83ebe97 refactor(frontend-python): rename Data to Value 2023-06-09 17:41:41 +02:00
Umut
c8cc8a811d feat(frontend-python): separate arguments 2023-06-09 13:01:27 +02:00
Umut
da4fedaabf test(frontend-python): increase tolerance of p_error simulation tests 2023-05-09 17:22:11 +02:00
Umut
02e655748f test(frontend-python): add crt deployment test 2023-04-12 07:55:33 +02:00
Umut
d9313f350a test(frontend/python): use dataflow marker in appropriate tests 2023-03-27 16:21:33 +02:00
Umut
4e7cbac264 refactor: concrete-numpy to concrete-python 2023-03-17 13:29:21 +01:00
Quentin Bourgerie
ce7eddc22d chore: Move to the mono repo layout 2023-03-08 11:23:21 +01:00