blob: 8a983955cfccf59ec479c4d6b88df94082f4986d [file] [log] [blame] [view] [edit]
# The MPACT Project
## Introduction
The MPACT project's main objective is to dramatically reduce the effort
required to create highly optimizing HPC and ML compilers for a large class
of architectures using LLVM and MLIR. We do this by providing a
declarative language-based mechanism for collecting and expressing
critical aspects of a target architecture in a way that can be reasoned
about and leveraged by all passes in both MLIR and LLVM.
test
## Building the MPACT compiler
To build and run the MPACT compiler from source (for developers),
please follow the steps below.
### Check out code and sync submodules
Use the following commands to clone the MPACT compiler repository.
```shell
git clone https://github.com/MPACT-ORG/mpact-compiler.git
cd mpact-compiler
git submodule update --init --recursive --progress
```
All following commands assume you remain in the `mpact-compiler` directory.
### Setup Python virtual environment
The following commands initialize a virtual environment.
```shell
python3.11 -m venv mpact_venv # one time set up
source mpact_venv/bin/activate # for each session
```
Also make sure to set the Python paths as follows.
```shell
export PYTHONPATH=`pwd`/build/tools/mpact/python_packages/mpact
```
### Install build requirements
Note that currently we rely on `torch-mlir` requirements defined in the
submodule to ensure all the build requirements are consistent.
```shell
python -m pip install --upgrade pip
python -m pip install -r externals/torch-mlir/requirements.txt
python -m pip install -r externals/torch-mlir/torchvision-requirements.txt
```
### Building the MPACT compiler in-tree
The following command generates configuration files to build the MPACT compiler
project completely *in-tree*, which means that both LLVM as well as torch-mlir
are built from source.
```shell
cmake -GNinja -Bbuild \
-DCMAKE_BUILD_TYPE=Release \
-DPython3_FIND_VIRTUALENV=ONLY \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_EXTERNAL_PROJECTS="torch-mlir;mpact" \
-DLLVM_EXTERNAL_TORCH_MLIR_SOURCE_DIR="${PWD}/externals/torch-mlir" \
-DLLVM_EXTERNAL_MPACT_SOURCE_DIR="${PWD}" \
-DLLVM_TARGETS_TO_BUILD=host \
-DMLIR_ENABLE_BINDINGS_PYTHON=ON \
externals/torch-mlir/externals/llvm-project/llvm
```
Run the following to ensure the MPACT compiler builds and runs correctly.
```shell
cmake --build build --target check-mpact
```