Commit Graph

1031 Commits

Author SHA1 Message Date
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
Antoniu Pop
0329d4fc2d fix(gpu-wrappers): fix KS/BS wrappers for GPU (memory management). 2023-01-18 19:33:07 +00:00
tmontaigu
ddf905b4db chore(rust): impl std::error::Error for CompilerError
All types which are errors should impl
the std::error::Error trait.

So that for example they could be put inside
a `Box<dyn std::error::Error>`.
2023-01-18 09:55:47 +01:00
youben11
95d49f4657 feat: add boolean types/ops in FHE dialect 2023-01-18 09:13:26 +01:00
tmontaigu
7c19da974a chore(rust): remove 'get_' prefix from getters
In rust the convention/guideline for getters is not to prefix them with `get_`.

This commit changes any `get_` getter function to follow that guideline.

See the API Guidelines: https://rust-lang.github.io/api-guidelines/naming.html?highlight=getter#getter-names-follow-rust-convention-c-getter
2023-01-17 15:24:59 +01:00
tmontaigu
e1171cf55f chore(rust): mark BufferRef::new as unsafe 2023-01-17 15:24:52 +01:00
David Testé
bc58e25d2a chore(ci): trigger prepare release workflow on version tag push
The CI don't wait anymore on other builds to trigger release
preparation workflow. It's up to the team to be sure that builds
are passing before pushing a new version tag on default branch.
In addition build workflows will run only when there is push on
default branch. Nothing will happend when a version tag is pushed
now.
2023-01-16 17:21:18 +01:00
tmontaigu
6f0fbc8a3d feat(rust): add from_tensor_[u32|u16] 2023-01-15 22:57:31 +01:00
tmontaigu
c9f3983577 fix(rust): serialize functions take self by ref 2023-01-14 11:45:58 +01:00
tmontaigu
6348eda50e fix(rust): properly give an array of location to mlirBlockCreate
The MlirBlock constructor expects one location per input argument
of the block.
2023-01-13 20:18:06 +01:00
tmontaigu
d188cfae54 fix(rust): change tinfo linking to ncurses
- tinfo is a part of the ncurses project.
- tinfo does not seem easily installable stand alone
  (no brew install tinfo, no dnf install tinfo-devel, etc)
  but installing ncurses is possible and generally makes tinfo
  'findable'
- on macos (M1 mac) it seems that even with ncurses installed
  tinfo is not found, but linking to ncurses fixes the problem
2023-01-13 19:32:50 +01:00
David Testé
2fe402f55e chore(ci): build docker images on aws ec2 to speed up process 2023-01-13 15:31:15 +01:00
David Testé
be45125ef8 chore(ci): remove steps related to keysetcache in aws builds 2023-01-13 14:58:16 +01:00
tmontaigu
237c7eee9b fix: remove unused but set variable 2023-01-13 13:05:22 +01:00
youben11
73a8e57fae fix(dockerfile): use ecdsa instead of rsa 2023-01-13 11:43:05 +01:00
youben11
f6edcd28e9 ci: release linux python wheels with cuda support 2023-01-13 11:43:05 +01:00
David Testé
fd2ce968ea chore(ci): move doc publishing to aws build for cpu
This is done to handle downloading of documentation artifacts.
Doing this between separate workflow is troublesome especially when
you have to wait on serveral of them.
2023-01-13 10:14:58 +01:00
youben11
9c370e1cec ci: fix macos release tarball 2023-01-12 17:56:53 +01:00
rudy
456e1952f5 fix: not private side effect in woppbs wrapper
Fix #865
2023-01-12 17:15:26 +01:00
David Testé
bf127e0846 chore(ci): move docker images publishing to its own workflow
This removes the old continuous-integration.yml file. Thus it
finalizes the splitting operation.
2023-01-12 14:43:08 +01:00
David Testé
af265206a9 chore(ci): move macos build and release jobs to their own workflow 2023-01-12 14:43:08 +01:00
David Testé
8a41b39f5e chore(ci): wait on all aws builds before publishing documentation 2023-01-12 13:24:15 +01:00
David Testé
2aab1439b2 chore(ci): fix aws build triggering on pull request event
When a PR was opened, thus for the first commits push, aws builds
weren't triggered. The workflow was only executed when commits were
pushed once again (synchronize event).
2023-01-12 10:52:00 +01:00
David Testé
140330f412 chore(ci): move doc publishing to its own workflow
Now this workflow would only be triggered on default branch once
the AWS build for CPU is completed. If the AWS workflows conclusion is
a success then the doc will be published.
2023-01-12 10:52:00 +01:00
David Testé
3ede5642d8 chore(ci): separate cpu and gpu aws builds
This is done to be able to wait on the result on their runs without
trigger workflow waiting on them (via workflow_run event) twice.
2023-01-12 10:52:00 +01:00
David Testé
f2dd9879b4 chore(ci): move doc publishing to its own workflow
This workflow depend on the execution of aws_build.yml when
executed on default branch.
2023-01-12 10:52:00 +01:00
David Testé
d307d438c5 chore(ci): move block pr merge to its own workflow 2023-01-12 10:52:00 +01:00
David Testé
a0abd67455 chore(ci): trigger aws builds on push on main 2023-01-12 10:52:00 +01:00
David Testé
03fb3ca49b chore(ci): move format and linting jobs to their own workflow
This is done to declutter the main workflow continuous-integration.yml.
2023-01-12 10:52:00 +01:00
David Testé
94df9ee21d chore(ci): remove legacy linux build and test job 2023-01-11 17:39:05 +01:00
Quentin Bourgerie
ca83b129b9 chore(ci): fix gpu build on aws using docker 2023-01-11 17:39:05 +01:00
David Testé
be2a377aaf chore(ci): automaticaly trigger aws build on commit push in pr 2023-01-11 17:39:05 +01:00