The HPVM Compiler Infrastcuture
This repository contains the source code and documentation for the HPVM Compiler Infrastructure.
HPVM is a compiler for heterogeneous parallel system. For more about what HPVM is, see our website and publications: PPoPP'18 paper, OOPSLA'19 paper, PPoPP'21 paper.
HPVM is currently at version 2.0.
Getting Started with HPVM
The HPVM compiler infrastructure builds on the LLVM Compiler.
This quick start guide will help you get started with obtaining and building the HPVM source code.
For more detailed instructions on how to use HPVM and information on the different components, please refer to our online documentation.
Checkout HPVM
The HPVM source code can be checked out by cloning our repository as follows:
git clone --recursive -b main https://gitlab.engr.illinois.edu/llvm/hpvm-release.git
cd hpvm-release
Python Environment
It is strongly recommended to use some Python virtual environment, as HPVM will install a few Python packages during this installation process. These packages are only required for Tensor-domain extensions ApproxHPVM and ApproxTuner.
If you use Anaconda for package management, we provide a conda environment file that covers all Python and package requirements (hpvm/env.yaml can be found in the repository):
conda env create -n hpvm -f hpvm/env.yaml
This creates the conda environment hpvm. If you use this method, remember to activate the environment each time you enter a bash shell:
conda activate hpvm
Run the install script
HPVM provides an install script that can be used to download the appropriate version of LLVM that is required for the current HPVM version, and build HPVM. This can be done as follows:
cd hpvm
./install.sh [options]
some common options to the install script:
-
-h
for usage information. -
--ninja
to use the Ninja build system. -
-j<N>
to specify number of threads while building. -
D<string>
to pass in CMAKE options. e.g.DCMAKE_BUILD_TYPE=Release
will pass the-DCMAKE_BUILD_TYPE=Release
option to cmake.
If no options are provided, the installer will use an interactive mode.
Please visit our Building HPVM page in the online documentation for further information.
Support
All questions can be directed to hpvm-dev@lists.cs.illinois.edu.