Skip to content
Snippets Groups Projects
user avatar
Akash Kothari authored
e7c8ccde
History

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 IR Specification

HPVM-C Language Specification

HPVM Compilation Process

Dependencies

The following components are required to be installed on your machine to build HPVM.

  • GCC (>=5.1.0)
  • CMake (>=3.4.3)
  • Python (>=2.7)
  • GNU Make (>=3.79.1)
  • CUDA (>= 9.1) (only required for GPU support)

Getting source code and building HPVM

Checkout HPVM:

git clone https://gitlab.engr.illinois.edu/llvm/hpvm-release.git/
cd 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, libcxx and libcxxabi, copies HPVM source into llvm/tools and builds the entire tree. It also builds a modified LLVM C-Backend, based on the one maintained by Julia Computing, 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 and Tests

We are providing the following HPVM benchmarks:

Benchmark descriptions and instructions on how to compile and run them are here.

We are also providing unit tests and regression tests.