Heterogeneous Parallel Virtual Machine
This repository contains miscellaneous supporting materals for HPVM.
Paper
Dependencies
You would need to download and install the following components for using NVIDIA GPUs to speed up your programs
- CUDA 9.1
Getting source code and building HPVM
Checkout HPVM:
git clone https://gitlab.engr.illinois.edu/llvm/hpvm.git
git checkout hpvm-reorg-9 (this step may not be needed once code is mirrored on Github)
HPVM installer script can be used to dowwnload, configure and build HPMV along with LLVM and other subprojects including Clang.
bash install.sh
Specifically, the HPVM installer downloads the LLVM, Clang, compiler-rt, libcxxabi and lld, copies HPVM source into llvm/tools and build the entire tree. A modified LLVM C-Backend is also built as a part of HPVM and is currently used to generate OpenCL kernels for GPUs.
Alternatively, CMake can be run manually.
cd hpvm/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).
To use hpvm to compile benchmarks set environment variable LLVM_SRC_ROOT
to llvm directory in your local repository
export LLVM_SRC_ROOT=<full path to hpvm>/llvm
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.