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
- Intel OpenCL SDK for Linux from software.intel.com/sdk/opencl. Follow the installation instructions (no special requirements).
- CUDA
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. LLVM C-Backend is also built as a part of HPVM and is currently used to perform code generation in OpenCL 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).
Building hpvm runtime
HPVM also includes a runtime library which comprises of low-level, target-specific wrappers required by HPVM's code generation.
cd projects/visc-rt
make
cd ..
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
Benchmark Suites
Benchmark suites have been migrated to the LLVM 4.0 build. They are located in VISC.