Commit Graph

369 Commits

Author SHA1 Message Date
rudy
58e02fd035 feat(Testlib): lib for testing libs generated by concretecompiler
Closes #201
2022-01-05 09:29:57 +01:00
youben11
d1fef75aea fix: change api link after repo renaming 2022-01-04 20:16:44 +01:00
youben11
63e96e2674 ci: use gcc and test build on macos 2022-01-04 20:16:44 +01:00
youben11
16dec44da0 chore: configure compilers via make 2022-01-04 20:16:44 +01:00
Antoniu Pop
8f71c331d4 fix(runtime): formatting. 2022-01-04 12:43:33 +01:00
Antoniu Pop
93835e0106 fix(runtime): move deallocation of key clones in context destructor. 2022-01-04 12:43:33 +01:00
Antoniu Pop
066a3d4e17 fix(runtime): remove strucutred binding as incompatible with C++ standard version. 2022-01-04 12:43:33 +01:00
Antoniu Pop
9deaa1400e chore: add missing license header. 2022-01-04 12:43:33 +01:00
Antoniu Pop
84f01f78d6 fix(runtime/DFR): create only one BSK clone per thread and deallocate. 2022-01-04 12:43:33 +01:00
youben11
492ce3309a chore(python): change version file
we don't want the version file to be included in the package to not
clash with version files of other subpackages, as it should be part of
the bigger concrete namespace package
2022-01-04 09:28:42 +01:00
youben11
0bbacdbb17 chore(python): rename package to concrete-compiler 2022-01-04 09:24:49 +01:00
rudy
0f1dbd919d fix(format_cpp): More robust error reporting 2022-01-03 17:58:01 +01:00
rudy
b8bd38dd6c feat(compiler): Output client parameters when compile to a library
close #198
2022-01-03 17:57:16 +01:00
Mayeul@Zama
a4e8227692 fix(docs): fix docs following the renaming 2022-01-03 17:31:29 +01:00
youben11
c276e13d97 chore(python): add namespace init file 2022-01-03 15:27:24 +01:00
youben11
f1161f7f6d chore: formatting
Quick fix due to ordering of includes, had to add #include
<mlir/Transforms/DialectConversion.h> to include/concretelang/Conversion/Utils/GenericOpTypeConversionPattern.h
2022-01-03 09:29:19 +01:00
youben11
1183c9dc94 fix(ci): fix formatting script
seems like big diffs weren't catched. Now we use ifne which checks if
the stdin isn't empty
2022-01-03 09:29:19 +01:00
youben11
e3ae6e9c06 ci: check if sources include license header 2022-01-03 09:29:19 +01:00
youben11
940cb96be4 chore: rename dialects
HLFHE to FHE
MidLFHE to TFHE
LowLFHE to Concrete
2021-12-29 15:13:34 +01:00
youben11
47ef595a2a chore: use namespace concrete for the py package
Compiler tools such as CompilerEngine would now be imported from
concrete.compiler
Dialects would now be imported from concrete.lang.dialects
And anything related to concretelang can be imported directly from
concrete.lang
2021-12-29 15:13:34 +01:00
youben11
e73291abdc chore: rename compiler to concrete-compiler
zamalang => concretelang
zamacompiler => concretecompiler
2021-12-29 15:13:34 +01:00
youben11
971cb56182 chore: licensing 2021-12-29 15:13:34 +01:00
rudy
48197d55ac feat(stress-tests): stress tests first case
Resolves #330
2021-12-28 09:03:38 +01:00
rudy
cdffb0ec8e fix(tests): CompileAndRunWithPrecision(6, 7 bits), more retries 2021-12-27 16:58:45 +01:00
rudy
d8fee32cea feat(HLFHELinalg): add apply_mapped_table_lookup
Resolves #182
2021-12-27 15:34:33 +01:00
Mayeul@Zama
81189ceaa9 fix .gitignore 2021-12-27 09:55:57 +01:00
aquint-zama
7f88d6553e docs: add first documentation 2021-12-27 09:55:57 +01:00
Antoniu Pop
a1a694a686 test(compiler): add unit tests for dataflow auto parallelization. 2021-12-23 15:57:53 +00:00
Antoniu Pop
cdca7ca6f7 feat(compiler): add Dataflow/RT dialect and code generation for dataflow auto parallelization. 2021-12-23 15:57:53 +00:00
Quentin Bourgerie
db683f4a0e feat(compiler/runtime): Introduce a RT dialect 2021-12-23 15:57:53 +00:00
Antoniu Pop
bc3d647453 fix(dfr): make HPX runtime environment persistent and deallocate temporaries. 2021-12-23 15:57:53 +00:00
Antoniu Pop
23d3dca3f2 formatting(dfr): add .hpp to the formatting script and format the relevant files. 2021-12-23 15:57:53 +00:00
Antoniu Pop
2cba686c66 fix(runtime): enable concurrent key usage by cloning it on get operation. 2021-12-23 15:57:53 +00:00
Antoniu Pop
e429180179 fix(ci): enable key caching for DF testing. 2021-12-22 18:22:22 +01:00
youben11
a32d73fb4e test(ci): test final python packages after release 2021-12-22 18:22:22 +01:00
youben11
62b417a373 refactor(ci): unify workflows into a single one
Having a single workflow make it easier to have dependencies between
jobs, like release and docker image being dependant of the tests job
2021-12-22 18:22:22 +01:00
rudy
5ed2dcb3c1 fix(compiler): MANP segfault bug in case of missing MANP value 2021-12-20 10:40:58 +01:00
rudy
7a286ba9f9 fix(KeySetCache): handle concurrent generation
Resolves #305
2021-12-20 10:07:48 +01:00
Andi Drebes
68e124964c test(compiler): Add tests for the HLFHELinalg tiling passes 2021-12-17 16:48:00 +01:00
Andi Drebes
7010a509d2 feat(compiler): Add option --hlfhelinalg-tile-sizes for global HLFHELinalg tile sizes
Add a new option --hlfhelinalg-tile-sizes that forces tiling of
HLFHELinalg operations and that sets the tile sizes to the sizes given
in the parameter. The specification of the tile sizes is a
comma-separated list of integers, e.g.,

  --hlfhelinalg-tile-sizes=2,2,2

forces to use tiles of size 2 in each dimension.
2021-12-17 16:09:59 +01:00
Andi Drebes
f319ba37d2 feat(compiler): Integrate HLFHELinalg tiling passes into compilation pipeline 2021-12-17 16:09:59 +01:00
Andi Drebes
bc75831c86 feat(compiler): Add passes for tiling of HLFHELinalg.matmul_eint_int
Add two passes related to the tiling of `HLFHELinalg.matmul_eint_int`
operations.

The `HLFHELinalgTilingMarker` pass takes a vector of tile sizes and
adds an integer array attribute "tile-sizes" to each instance of
`HLFHELinalg.matmul_eint_int`, e.g.,

  "HLFHELinalg.matmul_eint_int"(%arg0, %arg1) {"tile-sizes" = [2, 2, 2]} :
    (tensor<4x2x!HLFHE.eint<6>>, tensor<2x2xi7>) -> tensor<4x2x!HLFHE.eint<6>>

The `HLFHELinalgTiling` performs the actual tiling of each
`HLFHELinalg.matmul_eint_int` operation marked with a "tile-sizes"
attribute. The tiling preserves the level of abstraction of
HLFHELinalg and is implemented as a perfect loop nest of SCF for loops
with a `HLFHELinalg.matmul_eint_int` in the body.

For example,

  func @main(%arg0: tensor<4x2x!HLFHE.eint<6>>, %arg1: tensor<2x2xi7>)
    -> tensor<4x2x!HLFHE.eint<6>>
  {
    %0 = "HLFHELinalg.matmul_eint_int"(%arg0, %arg1) {"tile-sizes" = [2, 2, 2]} :
           (tensor<4x2x!HLFHE.eint<6>>, tensor<2x2xi7>) -> tensor<4x2x!HLFHE.eint<6>>
    return %0 : tensor<4x2x!HLFHE.eint<6>>
  }

becomes:

  func @main(%arg0: tensor<4x2x!HLFHE.eint<6>>, %arg1: tensor<2x2xi7>)
    -> tensor<4x2x!HLFHE.eint<6>>
  {
    %c2 = arith.constant 2 : index
    %c0 = arith.constant 0 : index
    %c4 = arith.constant 4 : index

    %0 = "HLFHELinalg.zero"() : () -> tensor<4x2x!HLFHE.eint<6>>
    %1 = scf.for %arg2 = %c0 to %c4 step %c2 iter_args(%arg3 = %0)
           -> (tensor<4x2x!HLFHE.eint<6>>) {
      %2 = scf.for %arg4 = %c0 to %c2 step %c2 iter_args(%arg5 = %arg3)
             -> (tensor<4x2x!HLFHE.eint<6>>) {
        %3 = scf.for %arg6 = %c0 to %c2 step %c2 iter_args(%arg7 = %arg5)
	       -> (tensor<4x2x!HLFHE.eint<6>>) {
          %4 = tensor.extract_slice %arg0[%arg2, %arg4] [2, 2] [1, 1] :
	         tensor<4x2x!HLFHE.eint<6>> to tensor<2x2x!HLFHE.eint<6>>
          %5 = tensor.extract_slice %arg1[%arg4, %arg6] [2, 2] [1, 1] :
	         tensor<2x2xi7> to tensor<2x2xi7>
          %6 = tensor.extract_slice %arg7[%arg2, %arg6] [2, 2] [1, 1] :
	         tensor<4x2x!HLFHE.eint<6>> to tensor<2x2x!HLFHE.eint<6>>

          %7 = "HLFHELinalg.matmul_eint_int"(%4, %5) :
	         (tensor<2x2x!HLFHE.eint<6>>, tensor<2x2xi7>)
		 -> tensor<2x2x!HLFHE.eint<6>>

          %8 = "HLFHELinalg.add_eint"(%6, %7) :
	         (tensor<2x2x!HLFHE.eint<6>>, tensor<2x2x!HLFHE.eint<6>>)
		 -> tensor<2x2x!HLFHE.eint<6>>

          %9 = tensor.insert_slice %8 into %arg7[%arg2, %arg6] [2, 2] [1, 1] :
	         tensor<2x2x!HLFHE.eint<6>> into tensor<4x2x!HLFHE.eint<6>>

          scf.yield %9 : tensor<4x2x!HLFHE.eint<6>>
        }
        scf.yield %3 : tensor<4x2x!HLFHE.eint<6>>
      }
      scf.yield %2 : tensor<4x2x!HLFHE.eint<6>>
    }
    return %1 : tensor<4x2x!HLFHE.eint<6>>
  }

Only full tiles are supported, i.e., the size of the dimensions of the
operands must be a multiple of the respective tile sizes.
2021-12-17 16:09:59 +01:00
Andi Drebes
77b7aa2f7c fix(compiler): Fix warnings and naming in test for parametric slices
- Rename `extract_slice_parametric_2x2` to
  `extract_slice_parametric_2x2x2x2` to reflect the 4-dimensional
  structure of the tiles.

- Make the array with the specification of the dimensions in
  `extract_slice_parametric_2x2x2x2` a `constexpr` in order to prevent
  the array `A` from being treated as a variable-length array.

- Cast the expression for the expected size of the result to `size_t`
  and change the type of the induction variables of the loop nest
  producing the initial values for the array `A` to `int64_t` to avoid
  warnings about the comparison of integer expressions with different
  signedness.
2021-12-17 15:52:57 +01:00
Andi Drebes
27ca5122bc enhance(compiler): Use named constant for the default pattern rewriting benefit
This introduces a new header file `zamalang/Support/Constants.h` for
constants, currently only populated with a constant for the default
pattern rewriting benefit of 1.
2021-12-17 15:28:21 +01:00
youben11
2e5bff93fd ci: check if there are commits to squash
we can then configure github to never merge when this doesn't pass
2021-12-17 08:46:38 +01:00
youben11
acf91c78a7 fix(ci): disable release worflow run on master with no tag
There were both runs of release for master and the tag push, so we now
match the tag push
2021-12-16 11:43:28 +01:00
youben11
319cc3fd28 fix(python): copy dynamic library into macos wheel 2021-12-16 09:15:25 +01:00
youben11
b812f6f7f2 feat(python): version python package from git tag
automatic detection of version from git tag and update of the python
version file
2021-12-16 09:15:25 +01:00
youben11
a94e05e85b ci: release mac
improve current workflow: more parallelism and factoring of steps with
matrix
2021-12-16 09:15:25 +01:00
youben11
aa07d12910 fix(python): add PyYAML as deps 2021-12-15 16:24:35 +01:00