Commit Graph

1062 Commits

Author SHA1 Message Date
rudy
19bc9b2933 fix(ci): prepare_release, typo on PATH 2023-02-28 09:17:10 +01:00
aPere3
15f07addc7 fix(concrete-compiler): abort compilation on first error
To prevent infinite compilation in case of potential circular
includes
2023-02-27 10:59:28 +01:00
Mayeul@Zama
220d733e98 chore(cmake): use HPX_INCLUDE_DIRS for ConcretelangRuntime only 2023-02-27 10:56:35 +01:00
rudy
00b9ebc60a fix: benchmark use the encoding field 2023-02-27 10:54:57 +01:00
Quentin Bourgerie
7ac6a97c85 chore(ci): Fix benchamrk on main as inputs are not setup for automatic merge benchmark 2023-02-24 11:27:55 +01:00
Quentin Bourgerie
7070eff562 chore(ci): Fix benchmark workflow 2023-02-24 10:17:28 +01:00
youben11
f2c1dc6392 fix: set client parameters with correct chunked int options
were set with default values
2023-02-22 10:50:26 +01:00
Quentin Bourgerie
4e0f0fa5b0 fix(manp): Fixing computation of negative constant 2023-02-21 18:04:13 +01:00
youben11
2e5f92b6b8 refactor: remove BConcrete dialect
- no more Concrete ciphertext/plaintext types: they are represented using standard MLIR types (int/tensor)
- Technically BConcrete was renamed to Concrete, and old Concrete was
  removed
- TFHE -> Concrete now takes into account the conversion of tensor of
  ciphertext into tensors of an additional dimension (LWE dim)
- Bufferization now works in Concrete
- Old Concrete optimization were moved to TFHE
- Concrete is now the dialect that lowers to CAPI calls
- TFHE -> Concrete now uses OpConversionPattern and is much cleaner in
  terms of type conversion
- Disabled tests for batching, as there was something weird about it:
  batchable operations implemented in Concrete but pass run in FHELinalg
2023-02-21 16:16:55 +01:00
Umut
d8eafabd22 feat: implement manual manp calculation for FHE.mul_eint 2023-02-21 14:25:26 +01:00
Umut
bc69c87d62 feat: implement maxpool2d operation 2023-02-21 14:25:26 +01:00
Alexandre Péré
56bdb05be3 feat(concrete-compiler): implement a new round operator in the fhe dialect 2023-02-20 08:57:30 +01:00
Quentin Bourgerie
3175d2ec85 chore: fix typo in benchmark workflow 2023-02-17 15:17:25 +01:00
Quentin Bourgerie
8fab9a4038 chore: select benchmark name in benchmark workflow 2023-02-17 15:06:15 +01:00
Quentin Bourgerie
0307227431 tests: Add cifar_8bits benchmark 2023-02-17 14:46:27 +01:00
Quentin Bourgerie
4a3c33b60a tests: Remove unsigned prefix to have the same reference than before 2023-02-17 14:08:34 +01:00
Alexandre Péré
52ad40c9cf feat(concrete-compiler): adds a tracing op in all dialects. 2023-02-17 09:04:42 +01:00
Andi Drebes
5d3af16617 test(compiler): Add check for omp.parallel after lowering a parallelizable FHELinalg op
This test ensures that at least one parallel region is generated for
an FHELinalg operation that is guaranteed to result in a parallel loop
when `concretecompiler` is invoked with `--parallelize`.
2023-02-14 09:53:02 +01:00
Andi Drebes
fc02bb5cd8 fix(compiler): Copy attributes when reinstantiating scf.for ops
The switch to reinstantiating conversion patterns for the conversion
from FHE to TFHE in commit 73fd6c5fe7
caused all attributes of `scf.for` operations to be dropped during the
conversion. This included the custom attribute `parallel`, which is
exploited further down the compilation pipeline to generate parallel
code. As a result, the performance of end-to-end benchmarks dropped
significantly.

This patch copies all attributes of `scf.for` operations upon
reinstantiation, which solves the performance regression.
2023-02-14 09:53:02 +01:00
Antoniu Pop
3ab10c8d3f fix(GPU runtime): fix BS & KS GPU allocation and synchronization, avoid re-allocation of KSK. 2023-02-14 08:22:15 +00:00
rudy
717c8c815f fix: ci macos test 2023-02-13 09:20:25 +01:00
youben11
59d35619a8 feat: lower and exec boolean mux 2023-02-09 09:43:48 +01:00
youben11
d0ae2563fa test: add chunked eint e2e tests 2023-02-07 12:27:01 +01:00
youben11
7e60f87141 refactor: remove chunked_eint
the pass transforming operations on chunked_eint will operate now on
eint
2023-02-07 12:27:01 +01:00
youben11
bb87d29934 feat: support chunked integer during enc/dec/exec 2023-02-07 12:27:01 +01:00
youben11
d41d14dbb8 feat: lower FHE.add on eint64 to ops on smaller chunks
this is a first commit to support operations on U64 by decomposing them
into smaller chunks (32 chunks of 2 bits). This commit introduce the
lowering pass that will be later populated to support other operations.
2023-02-07 12:27:01 +01:00
aPere3
fb680340f9 feat(concrete-compiler): add new ciphertext multiplication operator 2023-02-06 11:30:31 +01:00
rudy
117e15cc05 fix: build python package during build 2023-02-06 09:36:29 +01:00
rudy
a01fab0a90 feat: Makefile, python-package target 2023-02-06 09:36:29 +01:00
rudy
37421774a0 fix: python package requires wheel 2023-02-06 09:36:29 +01:00
aPere3
a200ce43bd fix p-error in mul_eint_int test 2023-02-03 16:19:43 +01:00
aPere3
e95c53f2ff feat: support signed execution
Author: aPere3 <alexandre.pere@zama.ai>
Co-authored-by: Umut <umutsahin@protonmail.com>
2023-02-03 16:19:43 +01:00
aPere3
f913c39e5b fix(format): fix linter complaining 2023-02-03 14:29:17 +01:00
aPere3
9a6309a079 fix(concrete-compiler): add end-to-end tests for tensor ops 2023-02-03 14:29:17 +01:00
aPere3
002be243be fix(concrete-compiler): fix bug in crt slice ops 2023-02-03 14:29:17 +01:00
aPere3
2fbcd1a792 fix(concrete-compiler): reassociation maps are incorrect in crt mode
See #890.
2023-02-03 14:29:17 +01:00
rudy
c6a44e9091 fix(ci):remove now useless step to free space 2023-02-02 14:28:54 +01:00
Quentin Bourgerie
63334e138f fix: Fixing integer extension for plaintext encoding (close #847) 2023-02-02 14:28:23 +01:00
rudy
b1bc6730f9 fix: update optimizer, new cache VERSION for security curves 2023-02-02 14:27:32 +01:00
Andi Drebes
73fd6c5fe7 refactor(compiler): FHE to TFHE: Use OpConversionPattern for dialect conversion
Use `OpConversionPattern` instead of `OpRewritePattern` for operation
conversion during dialect conversion. This makes explicit and in-place
type conversions unnecessary, since `OpConversionPattern` already
properly converts operand types and provides them to the rewrite rule
through an operation adaptor.

The main contributions of this commit are the two class templates
`TypeConvertingReinstantiationPattern` and
`GenericOneToOneOpConversionPattern`.

The former allows for the definition of a simple replacement rule that
re-instantiates an operation after the types of its operands have been
converted. This is especially useful for type-polymorphic operations
during dialect conversion.

The latter allows for the definition of patterns, where one operation
needs to be replaced with a different operation after conversion of
its operands.

The default implementations for the class templates provide
conversions rules for operations that have a generic builder method
that takes the desired return type(s), the operands and (optionally) a
set of attributes. How attributes are discarded during a conversion
(either by omitting the builder argument or by passing an empty set of
attributes) can be defined through specialization of
`ReinstantiationAttributeDismissalStrategy`.

Custom replacement rules that deviate from the scheme above should be
implemented by specializing
`TypeConvertingReinstantiationPattern::matchAndRewrite()` and
`GenericOneToOneOpConversionPattern::matchAndRewrite()`.
2023-02-01 14:27:10 +01:00
Quentin Bourgerie
49b8bf484c fix: Do not assert fail with too large weight and fix computation of 2-Norm with negative weigth (close #892) 2023-02-01 10:50:46 +01:00
Quentin Bourgerie
227a0747fa tests: Remove too invasif test 2023-01-30 15:14:53 +01:00
Quentin Bourgerie
d0308dda43 chore: Use parameters curves generated files and expose security level options 2023-01-30 15:14:53 +01:00
Antoniu Pop
f60bd16e2b fix(GPU): remove transfers of uninitialized data to GPU. 2023-01-30 15:08:38 +01:00
youben11
36f51ba0c2 feat: lower and exec boolean ops 2023-01-26 11:22:41 +01:00
tmontaigu
ee00672996 feat(rust): partially bind CircuitGate, EncryptionGate
This adds partial bindings of the CircuitGate, EncrytionGate
and Encoding types for the rust frontend
2023-01-24 15:49:44 +01:00
tmontaigu
8e8651c6a6 chore(rust): rename crate
Renames the crate from `concrete_compiler_rust` to
`concrete-compiler`.

- The `_rust` is removed as its redundant, the crate is a rust project.
- The `_` are replaced with `-` as its the naming scheme for our other
  crates
2023-01-23 11:01:23 +01:00
rudy
bac3ed38e0 fix: apply_multi_lookup_table, remove costly workaround
Closes #881
2023-01-23 09:53:25 +01:00
rudy
b7668a7256 fix: apply_mapped_lookup_table, remove costly workaround
Closes #880
2023-01-19 14:57:18 +01:00
Quentin Bourgerie
d1ddd60a23 fix: Fixing the MANP computation for conv2d (close #883) 2023-01-19 13:32:59 +01:00