The HPVM Compiler Infrastructure

HPVM is a compiler for heterogeneous parallel systems. For more about what HPVM is, see our website and publications: HPVM (PPoPP’18), ApproxHPVM (OOPSLA’19), ApproxTuner (PPoPP’21).

This is the documentation of HPVM at version 2.0.


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

HPVM includes a retargetable compiler infrastructure that targets CPUs, GPUs, FPGAs, and accelerators (this release does not include accelerator support) and uses a portable compiler IR that explicitly represents data flow at the IR level, It supports task, data, and pipelined parallelism HPVM provides an extensible platform that compiler and programming languages researchers can use as part of their work.

ApproxHPVM and ApproxTuner extend the HPVM compiler with support for high-level linear algebra tensor operations (e.g., convolution, matrix multiplication) and a framework that optimizes tensor-based programs using approximations that tradeoff accuracy for performance and/or energy. ApproxHPVM and ApproxTuner support many popular CNN models. ApproxTuner supports an approximation tuning system that automatically selects per-operation approximation knobs to maximize program performance, while allowing users to specify an acceptable degradation in accuracy. ApproxHPVM and ApproxTuner provide an extensible system that researchers in compilers, approximate computing and machine learning can use to optimize their applications, and experiment with new custom approximation techniques.

Getting Started

For those who are new to the HPVM system.

User Guides

Developer Guides


All questions can be directed to