Skip to content
Snippets Groups Projects
Name Last commit Last update
.hooks
hpvm
.clang-format
.gitignore
README.md

The HPVM Compiler Infrastructure

This repository contains the source code and documentation for the HPVM Compiler Infrastructure.

The README briefly describes how to get started with building and installing HPVM. It also provides a benchmark suite to test the compiler infrastructure.

Paper

PPoPP'18 paper

Docs

HPVM Documentation

HPVM-C Language Specification

Dependencies

You would need to download and install the following components for to use HPVM.

  • GCC (>=5.1.0)
  • CMake (>=3.4.3)
  • Python (>=2.7)
  • GNU Make (>=3.79.1)
  • CUDA 9.1

Getting source code and building HPVM

Checkout HPVM:

git clone https://gitlab.engr.illinois.edu/llvm/hpvm.git
git checkout hpvm-release

HPVM installer script can be used to download, configure and build HPVM along with LLVM and other subprojects including Clang.

cd hpvm
bash install.sh

Specifically, the HPVM installer downloads LLVM, Clang, compiler-rt, libcxxabi and lld, copies HPVM source into llvm/tools and builds the entire tree. It also builds a modified LLVM C-Backend as a part of HPVM and is currently used to generate OpenCL kernels for GPUs.

In the beginning of the building process, the installer provides users the choice of automatically or manually building HPVM. If HPVM is selected to be automatically built, the installer allows users to type in the number of threads they want to use. The default number of threads used to build HPVM is 2.

Alternatively, CMake can be run manually.

mkdir build
cd build
cmake ../llvm [options]

Some common options that can be used with CMake are:

  • -DCMAKE_INSTALL_PREFIX=directory --- Specify for directory the full pathname of where you want the HPVM tools and libraries to be installed.

  • -DCMAKE_BUILD_TYPE=type --- Valid options for type are Debug, Release, RelWithDebInfo, and MinSizeRel. Default is Debug.

  • -DLLVM_ENABLE_ASSERTIONS=On --- Compile with assertion checks enabled (default is Yes for Debug builds, No for all other build types).

In order to manually build and install HPVM, GNU Make can be run using the following.

make -j<number of threads>
make install

With all the aforementioned steps, HPVM should be built, installed and ready for use!

Benchmarks

We are providing the following benchamrks with HPVM:

  • Select benchmarks from the Parboil benchmark suite, located under test/parboil.
  • An edge detection pipeline benchmark, located under test/pipeline.
  • A Camera ISP pipeline, curtosy of our collaborators at Harvard, located under test/cava.