diff --git a/README.md b/README.md index 678ca2646a6c68913a005b840e6ff0f3ee3f9409..e03ee60b60394e460e145ce27c5742aac42cccbe 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Heterogeneous Parallel Virtual Machine -This repository contains miscellaneous supporting materals for HPVM. +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 HPVM infrastructure. ## Paper @@ -12,8 +15,12 @@ This repository contains miscellaneous supporting materals for HPVM. [HPVM-C Language Specification](/hpvm/docs/hpvm-c.md) ## Dependencies -You would need to download and install the following components for using NVIDIA GPUs to speed up your programs +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 @@ -24,18 +31,37 @@ 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. +HPVM installer script can be used to download, configure and build HPVM along with LLVM and other subprojects including Clang. ```shell 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. +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. +```shell +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 +In order to manually build and install HPVM, GNU Make can be run using the following. ```shell -export LLVM_SRC_ROOT=<full path to hpvm>/llvm +make -j<Number of threads> +make installl ``` +With all the aforementioned steps, HPVM should be built, installed and ready for use! ### Benchmarks We are providing the following benchamrks with HPVM: