HPVM Release

The Illinois LLVM compiler research group is excited to announce the open-source release of HPVM (version 2.0). HPVM is a retargetable compiler infrastructure that targets CPUs, GPUs, and accelerators (this release does not include accelerator support) [1]. HPVM uses a target-independent compiler IR that extends the LLVM 13.0 compiler IR with an explicit, hierarchical data flow representation that captures task, data, and pipelined parallelism.

This new release introduces great new features into the HPVM infrastructure, as well as bug fixes and improvements. The main additional components in this release are:

  • The HeteroC++ front end: a new front end language for HPVM that makes writing your applications for HPVM compilation simpler and cleaner.
  • An FPGA back end for HPVM: a new back end for HPVM allowing us to target Intel FPGAs. The back end uses the Intel FPGA SDK for OpenCL, so any Intel FPGA supported by the SDK can be targeted with our new back end.
  • An optimizer framework: a framework that consists of compiler optimizations and design space exploration designed to automatically tune programs for a given target hardware. The framework includes a performance model for Intel FPGAs, and provides the capability to use a custom evaluation script that allows targeting any other devices supported by HPVM. The compiler optimizations included in the optimizer consist of both HPVM-DFG-level and standard LLVM-level optimizations.

HPVM includes backends for CPUs, NVIDIA GPUs (using cuDNN for tensor ops and OpenCL for non-tensor computations), and Intel FPGAs (using Intel FPGA SDK for OpenCL). HPVM comes with an easy-to-use install script that automates the process of installing and patching LLVM 13.0, and automatically installs the necessary python packages. The release includes multiple benchmarks, both general and DNN benchmarks, as well as unit tests and regression tests.

HPVM can be downloaded from our public GitLab repository. Read our online documentation for how to build, install, and use HPVM. HPVM is provided under the Apache 2.0 License with LLVM Extensions (the same as used by the LLVM infrastructure). Any questions or suggestions can be directed to: hpvm-dev at lists.cs.illinois.edu.

The intended audience for HPVM includes researchers and developers interested in heterogeneous parallel computing, including those working in the areas of compilers, programming languages, approximate computing, software optimization, static and dynamic program analysis, autotuning, and systems for machine learning.

The following people led the effort in creating this release:

This work was sponsored by the DARPA Domain-specific Systems on Chip (DSSOC) program, part of the Electronics Resurgence Initiative (ERI), under Contract# HR0011-18-C-0122. It was also supported in part by the National Science Foundation Grant CCF 13-02641, the Applications Driving Architectures (ADA) Research Center, a JUMP Center co-sponsored by SRC and DARPA, and the University of Illinois.

Previous Releases

HPVM v1.0

This release is a major addition to our first release (version 0.5), adding support for linear algebra tensor operations, Pytorch and Keras frontends, approximations for convolution operators, and an efficient and flexible framework for approximation tuning. Our novel approximation-tuner [2] automatically selects approximation knobs for individual tensor operations and selects configurations that maximize a (configurable) performance objective.

 

[1] Maria Kotsifakou, Prakalp Srivastava, Matthew D. Sinclair, Rakesh Komuravelli, Vikram Adve, and Sarita Adve. 2018. HPVM: Heterogeneous Parallel Virtual Machine. In Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’18). Association for Computing Machinery, New York, NY, USA.

[2] Hashim Sharif, Yifan Zhao, Maria Kotsifakou, Akash Kothari, Benjamin Schreiber, Elizabeth Wang, Yasmin Sarita, Nathan Zhao, Keyur Joshi, Vikram Adve, Sasa Misailovic, Sarita Adve, “ApproxTuner: A Compiler and Runtime System for Adaptive Approximations,” In Proceedings of Principles and Practice of Parallel Programming (PPoPP), Feb-Mar 2021, Virtual Conference, Seoul, South Korea.