Commit Graph

3258 Commits

Author SHA1 Message Date
Antoniu Pop
acf5780ee3 fix(compiler): handle splice streams (streams originating on device, used both on device and on host) in SDFG for GPU scheduling. 2024-01-05 13:15:12 +00:00
Andi Drebes
6b5baca515 fix(compiler): Batching: Fix hoisting of indexed ops with mixed offsets
For `ExtractSliceOp` and `InsertSliceOp`, the code performing the
hoisting of indexed operations in the batching pass derives the
indexes of the hoisted operation from the indexes provided by
`ExtractSliceOp::getOffsets()` and
`InsertSliceOp::getOffsets()`. However, these methods only return
dynamic indexes, such that operations with mixed, dynamic and static
offsets are hoisted incorrectly.

This patch replaces the invocations of `ExtractSliceOp::getOffsets()`
and `InsertSliceOp::getOffsets()` with invocations of
`ExtractSliceOp::getMixedOffsets()` and
`InsertSliceOp::getMixedOffsets()`, respectively in order to take into
account both static and dynamic indexes.
2024-01-05 13:15:12 +00:00
Andi Drebes
c24d9c9553 fix(compiler): Batching: Do not generate tensor.collapse_shape operations reproducing the same shape
The IR generated by the batching pattern introduces intermediate
tensor values omitting the batched dimensions for batched
operands. This happens uncondiationally, leading to the generation of
`tensor.collapse_shape` operations with the same output and inout
shape. However, verification for such operation fails, since the
verifier assumes that the rank of the resulting tensor is reduced at
least by one.

This commit modified the check in `flattenTensor`, such that no
flattening operation is generated if the input and output shapes would
be identical.
2024-01-05 13:15:12 +00:00
Andi Drebes
51f10e38b3 fix(compiler): Batching: Ensure identical order of indexing IVs in cleanup pattern
Currently, the cleanup pattern matches sequences of `tensor.extract` /
`tensor.extract_slice`, `tensor.insert` / `tensor.insert_slice` and
`scf.yield` operations that are embedded into perfect loop nests whose
IVs are referenced in quasi-affine expressions with constant
steps. The pattern ensures that the extraction and insertion operation
use the same IVs for indexing, but does not check whether they appear
in the same order.

However, the order in which IVs are used for indexing is crucial when
replacing the operations with `tensor.extract_slice` and
`tensor.insert_slice` operations in order to preserve the shape of the
slices and the order of elements.

For example, when the cleanup pattern is applied to the following IR:

```
 %c0 = arith.constant 0 : index
 %c1 = arith.constant 1 : index
 %c2 = arith.constant 2 : index
 %c3 = arith.constant 3 : index

 scf.for %i = %c0 to %c3 step %c1 ... {
   scf.for %j = %c0 to %c2 step %c1 ... {
      %v = tensor.extract ... [%i, %j]
      %t = tensor.insert ... [%j, %i]
      scf.yield %t
   }
   ...
 }
```

The extracted slice has a shape of 3x2, while the insertion should be
happening with a slice with the shape 2x3.

This commit adds an additional check to the cleanup pattern that
ensures that loop IVs are used for indexing in the same order and
appear the same number of times.
2024-01-05 13:15:12 +00:00
Andi Drebes
dbcfa92bd3 refactor(compiler): Batching: Do not shift / scale already normalized indexes
Normalization of indexes in the batching pass currently
unconditionally emits arithmetic operations to shift and scale indexes
regardless of whether these indexes are already normalized. This leads
to unnecessary subtractions with 0 and divisions by 1.

This commit introduces two additional checks to the code normalizing
indexes that prevent arithmetic operations to be emitted for indexes
that do not need to be shifted or scaled.
2024-01-05 13:15:12 +00:00
Bourgerie Quentin
1dec886770 feat(compiler/frontend-python): Expose default GPU CompilerOptions set and use it in concrete-python 2024-01-05 13:15:12 +00:00
aPere3
6691c8f107 feat(frontend): add support for gpu in concrete-python 2024-01-05 13:15:12 +00:00
Bourgerie Quentin
15835719b9 fix(compiler/optimizer): Returns error for optimization strategy that doesn't support composition v2.5.0-rc4 nightly-2024.01.05 2024-01-04 15:00:25 +01:00
Bourgerie Quentin
398af2783d test(compiler): Add disabled test on composition (to fix later) 2024-01-04 15:00:25 +01:00
Bourgerie Quentin
f3ec1976ef fix(compiler/optimizer): Returns NotComposable error if not lookup table in dag 2024-01-04 15:00:25 +01:00
Alexandre Péré
60da713312 feat(optimizer): adds support for function composition 2024-01-04 15:00:25 +01:00
Arthur Meyre
2d3dc73ab8 chore(backend): fix nightly feature which was not forwarded to TFHE-rs
- this will allow to have AVX512 on x86 machines which have the hardware
feature available if concrete-cpu is built with a rust nightly toolchain
and the nightly feature enabled
2024-01-04 14:38:06 +01:00
rudy
42c7ee977e feat(frontend-python): activate local env using make nightly-2024.01.04 2024-01-03 18:46:53 +01:00
Bourgerie Quentin
f58c0396e5 chore(compiler): Remove automatic compiler gpu benchmark on merge nightly-2024.01.03 2024-01-02 19:23:38 +01:00
Bourgerie Quentin
c339e2a10b chore(backend/frontend): Fixing formatting... 2024-01-02 19:23:38 +01:00
Bourgerie Quentin
06509bb5d7 chore(ci): Fix file changed 2024-01-02 19:23:38 +01:00
Bourgerie Quentin
9a8b644a70 chore(frontend-python): Regenerate keyset on error 2024-01-02 18:18:30 +01:00
Bourgerie Quentin
afb9420dbb fix(backend/cpu): Fix the size of the expanded lut in woppbs case of poly size > lut size 2024-01-02 18:18:30 +01:00
dependabot[bot]
8879c4b376 chore(ci): bump tj-actions/changed-files from 32 to 41
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 32 to 41.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Commits](https://github.com/tj-actions/changed-files/compare/v32...v41)

---
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>
2024-01-02 14:27:10 +01:00
dependabot[bot]
0c4b9b0731 chore(ci): bump dawidd6/action-download-artifact from 2 to 3
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 2 to 3.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 14:22:42 +01:00
dependabot[bot]
911cac23fe chore(ci): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 14:21:36 +01:00
dependabot[bot]
f03226c6b6 chore(ci): bump actions/download-artifact from 3 to 4
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 14:08:12 +01:00
dependabot[bot]
3efd421b25 chore(ci): bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 13:56:11 +01:00
dependabot[bot]
22dc7080ea chore(backend): deps, bump rustix in /backends/concrete-cpu/implementation
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.37.21 to 0.37.27.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.37.21...v0.37.27)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
v2.5.0-rc3 nightly-2024.01.02 nightly-2023.12.30
2023-12-29 12:08:13 +01:00
dependabot[bot]
c1bd672509 chore(backend): bump rustix in /backends/concrete-cpu/noise-model
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.37.21 to 0.37.27.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.37.21...v0.37.27)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-29 11:46:53 +01:00
dependabot[bot]
1d0800012a chore(compiler): deps, bump rustix in /compilers/concrete-optimizer
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.37.21 to 0.37.27.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.37.21...v0.37.27)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-29 11:39:52 +01:00
Umut
7872bc5430 fix(frontend-python): generate correct MLIR for signed integer rounding to 1-bit 2023-12-29 12:42:29 +03:00
Umut
ee5be3af43 feat(frontend-python): keys are generated property 2023-12-29 10:19:06 +03:00
Umut
1edd341fb0 feat(frontend-python): printing assignment 2023-12-29 10:19:06 +03:00
Umut
b8db12ae53 feat(frontend-python): bit extraction nightly-2023.12.28 nightly-2023.12.27 nightly-2023.12.29 2023-12-26 14:31:23 +03:00
Umut
ee7a321408 chore(frontend-python): move lsb method to correct place to preserve method ordering 2023-12-26 14:31:23 +03:00
Bourgerie Quentin
18e4673f11 chore(frontend-python/ci): Cleanup host after testing nightly-2023.12.23 nightly-2023.12.26 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
e69a9ca520 fix(compiler/tests): bad options in end-to-end-test in macos 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
b2e918156c chore(ci): Fix keyset cache path for concrete python tests 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
a812984636 chore(backend/cuda): Removing concrete cuda workflow (since new development will be in another repo) 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
1d5ea66bec fix(optimizer): Fixing nighlty check 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
98274e012e test(backend-cpu): Remove useless zip tests 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
e664aaafcb fix(backend-gpu): Fixing cuda code for tfhe-rs keysitch key layout 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
fc10062b4b test(compiler): Add --input-compression to the end-to-end-test 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
4d1d7bde7d test(compiler): Add --simulation options to end-to-end-test tool 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
c67fac4082 feat(compiler): Introduce input compression and use tfhe-rs as backend
- added --compress-input compiler option which forces the use of seeded
  bootstrap keys and keyswitch keys
- replaced the concrete-cpu FHE implementation with tfhe-rs

Co-authored-by: Nikita Frolov <nf@mkmks.org>
2023-12-22 15:51:02 +01:00
Bourgerie Quentin
0379f3676c fix(compiler/tests): Recreate the entire testCicuit when retrying a test as the keyset is also used by the clientProgram 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
4a8356c18d feat(compiler/tests): Add optimizer-key-sharing option to the end-to-end tests tool 2023-12-22 15:51:02 +01:00
Bourgerie Quentin
8ecea9d625 fix(compiler/tests): Print values when a test fail 2023-12-22 15:51:02 +01:00
Benoit Chevallier-Mames
a6a7e886fd docs(compiler): update the readme
- make it more coherent with the Concrete ML readme
- remove the warning about the old library which was called Concrete
nightly-2023.12.22
2023-12-21 16:10:17 +01:00
Umut
5fa62d3424 feat(frontend-python): fancy indexing 2023-12-21 15:51:39 +03:00
Alexandre Péré
e82a8f6ddb chore(compiler): fix broken retry for flaky tests nightly-2023.12.21 nightly-2023.12.19 nightly-2023.12.20 2023-12-18 15:54:25 +01:00
Umut
b9806e48f6 fix(frontend-python): use more strict inputset to fix a flanky test 2023-12-18 14:03:50 +01:00
Bourgerie Quentin
ddd85c4aeb chore(ci): Change instance for benchmarks nightly-2023.12.16 2023-12-15 11:00:45 +01:00
Bourgerie Quentin
39e27d3766 chore(compiler/bench): Remove useless bench 2023-12-15 11:00:45 +01:00