Skip to content
Snippets Groups Projects

The HPVM Compiler Infrastcuture

Documentation Status pipeline status

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.