This commit rebases the compiler onto commit f69328049e9e from llvm-project. Changes: * Use of the one-shot bufferizer for improved memory management * A new pass `OneShotBufferizeDPSWrapper` that converts functions returning tensors to destination-passing-style as required by the one-shot bufferizer * A new pass `LinalgGenericOpWithTensorsToLoopsPass` that converts `linalg.generic` operations with value semantics to loop nests * Rebase onto a fork of llvm-project at f69328049e9e with local modifications to enable bufferization of `linalg.generic` operations with value semantics * Workaround for the absence of type propagation after type conversion via extra patterns in all dialect conversion passes * Printer, parser and verifier definitions moved from inline declarations in ODS to the respective source files as required by upstream changes * New tests for functions with a large number of inputs * Increase the number of allowed task inputs as required by new tests * Use upstream function `mlir_configure_python_dev_packages()` to locate Python development files for compatibility with various CMake versions Co-authored-by: Quentin Bourgerie <quentin.bourgerie@zama.ai> Co-authored-by: Ayoub Benaissa <ayoub.benaissa@zama.ai> Co-authored-by: Antoniu Pop <antoniu.pop@zama.ai>
Concrete Compiler
The Concrete Compiler takes a high level computation model and produces a programs that evaluate the model in an homomorphic way.
Build tarball
The final tarball contains intallation instructions. We only support Linux x86_64 for the moment. You can find the output tarball under /tarballs.
$ cd compiler
$ make release_tarballs
Build the Python Package
Currently supported platforms:
- Linux x86_64 for python 3.8, 3.9, and 3.10
Linux
We use the manylinux docker images for building python packages for Linux. Those packages should work on distributions that have GLIBC >= 2.24.
You can use Make to build the python wheels using these docker images:
$ cd compiler
$ make package_py38 # package_py39 package_py310
This will build the image for the appropriate python version then copy the wheels out under /wheels
Build wheels in your environment
Building the wheels is actually simple.
$ pip wheel --no-deps -w ../wheels .
Depending on the platform you are using (specially Linux), you might need to use auditwheel to specify the platform this wheel is targeting. For example, in our build of the package for Linux x86_64 and GLIBC 2.24, we also run:
$ auditwheel repair ../wheels/*.whl --plat manylinux_2_24_x86_64 -w ../wheels