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.
To install the MPACT compiler through PyPI, please use the following command:
pip install mpactTo build and run the MPACT compiler from source (for developers), please follow the steps below.
Use the following commands to clone the MPACT compiler repository.
git clone https://github.com/MPACT-ORG/mpact-compiler.git
cd mpact-compiler
git submodule update --init --recursive --progressTo always get updated submodules through git pull, set the following flag:
git config --global submodule.recurse trueNOTE: All following commands assume you remain in the mpact-compiler directory.
The following commands initialize a virtual environment under bash/sh/etc. For other shells, see Note 1, below.
python3.11 -m venv mpact_venv # one time set up
source mpact_venv/bin/activate # MUST BE REPEATED FOR EVERY SESSIONNext, set the Python paths as follows; for shells not in the bash/sh family, see Note 2, below.
export PYTHONPATH=`pwd`/build/tools/mpact/python_packages/mpactNote that currently we rely on torch-mlir requirements defined in that
submodule to ensure all the build requirements are consistent.
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.txtFor shells not in the bash/sh family, see Note 3, below.
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.
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/llvmTo speed up the build process, you can set up ccache and add the following flags to the command above:
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccacheRun the following to ensure the MPACT compiler builds and runs correctly.
cmake --build build --target check-mpactAnd the following to run all benchmarks (see Benchmarks for more details).
cmake --build build --target benchmark-mpactPerformance of critical kernels for ML models are tracked for each commit. Any regression > 120% will be notified. Graphs could be found in the github page.
- Shells other than bash/sh/etc. require a different
activatescript, as shown. Because the python environment has to be set up for every session, we recommend putting it in your .*sh startup file.- For csh/tcsh/etc.:
source `pwd`/mpact_venv/bin/activate.csh
- For fish/etc.:
source <path_to_mpact_compiler>/mpact_venv/bin/activate.fish
- For csh/tcsh/etc.:
- Shells other than bash/sh/etc. set their environment variables differently:
- For csh/tcsh/etc.:
setenv PYTHONPATH `pwd`/build/tools/mpact/python_packages/mpact - If using csh/tcsh/etc., run the following command before trying to build the compiler:
rehash