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 for heterogeneous parallel systems that targets CPUs, GPUs, and FPGAs, and has been used for other domain-specific accelerators. HPVM uses a target-independent compiler IR that extends the LLVM compiler IR with an explicit, hierarchical dataflow graph representation that captures task, data, and (streaming) pipelined parallelism. 

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

  • The Hetero-C++ front end: A new front end language for HPVM that makes it much simpler and cleaner to parallelize C/C++ applications for HPVM compilation. Hetero-C++ describes hierarchical task level and data level parallelism which directly lower to HPVM dataflow graphs.
  • 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 optimization and design space exploration (DSE) framework: A framework that consists of compiler optimizations and design space exploration designed to automatically tune programs for a given hardware target. 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.
  • LLVM upgrade: HPVM has been upgraded to LLVM 13.0.
  • Code reorganization: Code base and library / tool structure have been reorganized to be more logical and easier to navigate.
  • Testing infrastructure enhancements: More lit tests have been added for all the different components of HPVM.

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.

This and previous HPVM releases 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

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.

HPVM public releases have been made possible through the efforts of the following people:

  • Vikram Adve (vadve at
  • Dhruv Baronia (baronia3 at
  • Aaron Councilman (aaronjc4 at
  • Adel Ejjeh (aejjeh at
  • Akash Kothari (akashk4 at
  • Maria Kotsifakou (kotsifa2 at
  • Leon Medvinsky (leonkm2 at
  • Hemang Nehra (hnehra2 at
  • Abdul Rafae Noor (arnoor2 at
  • Peter Pao-Huang (ytp2 at
  • Hashim Sharif (hsharif3 at
  • Yifan Zhao (yifanz16 at
  • Nathan Zhao (nz11 at

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.


[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.