Reference. A compiler infrastructure for accelerator generators
Cite
Cited by (3)
Unifying Static and Dynamic Intermediate Languages for Accelerator Generators kim-2024-unifying
Compilers for accelerator design languages (ADLs) translate high-level languages into application-specific hardware. ADL compilers rely on a hardware control interface to compose hardware units. There are two choices: static control, which relies on cycle-level timing; or dynamic control, which uses explicit signalling to avoid depending on timing details. Static control is efficient but brittle; dynamic control incurs hardware costs to support compositional reasoning. Piezo is an ADL compiler that unifies static and dynamic control in a single intermediate language (IL). Its key insight is that the IL’s static fragment is a refinement of its dynamic fragment: static code admits a subset of the run-time behaviors of the dynamic equivalent. Piezo can optimize code by combining facts from static and dynamic submodules, and it opportunistically converts code from dynamic to static control styles. We implement Piezo as an extension to an existing dynamic ADL compiler, Calyx. We use Piezo to implement a frontend for an existing ADL, a systolic array generator, and a packet-scheduling hardware generator to demonstrate its optimizations and the static–dynamic interactions it enables.
Stepwise Debugging for Hardware Accelerators berlstein-2023-stepwise
Modular Hardware Design with Timeline Types nigam_amorim_sampson_2023
Modular design is a key challenge for enabling large-scale reuse of hardware modules. Unlike software, however, hardware designs correspond to physical circuits and inherit constraints from them. Timing constraints—which cycle a signal arrives, when an input is read—and structural constraints—how often a multiplier accepts new inputs—are fundamental to hardware interfaces. Existing hardware design languages do not provide a way to encode these constraints; a user must read documentation, build scripts, or in the worst case, a module’s implementation to understand how to use it. We present Filament, a language for modular hardware design that supports the specification and enforcement of timing and structural constraints for statically scheduled pipelines. Filament uses timeline types, which describe the intervals of clock-cycle time when a given signal is available or required. Filament enables safe composition of hardware modules, ensures that the resulting designs are correctly pipelined, and predictably lowers them to efficient hardware.
Cites 43 works (1 here)
With notes (1)
Predictable accelerator design with time-sensitive affine types nigam-2020-predictable
External (42)
- Intel High Level Synthesis Compiler (2021)
- PolyBench/C: The Polyhedral Benchmark Suite (2021)
- Catapult High-Level Synthesis (2021)
- The Shang High-Level Synthesis Framework (2021)
- Type-Directed Scheduling of Streaming Accelerators (2020)
- SuSy: A Programming Model for Productive Construction of High-Performance Systolic Arrays on FPGAs (2020)
- LLHD: A Multi-Level Intermediate Representation for Hardware Description Languages (2020)
- HeteroCL: A Multi-Paradigm Programming Infrastructure for Software-Defined Reconfigurable Computing (2019)
- μIR: An Intermediate Representation for Transforming and Optimizing the Microarchitecture of Application Accelerators (2019)
- LNAST: A language neutral intermediate representation for hardware description languages (2019)
- Invoking and Linking Generators from Multiple Hardware Languages using CoreIR (2018)
- A Configurable Cloud-Scale DNN Processor for Real-Time AI (2018)
- Dynamically Scheduled High-Level Synthesis (2018)
- Spatial: a language and compiler for application accelerators (2018)
- PolySA: Polyhedral-Based Systolic Array Auto-Compilation (2018)
- Reusability is FIRRTL ground: Hardware construction languages, compiler frameworks, and transformations (2017)
- In-datacenter performance analysis of a tensor processing unit (2017)
- P4FPGA: A Rapid Prototyping Framework for P4 (2017)
- Programming Heterogeneous Systems from an Image Processing DSL (2017)
- Vivado Design Suite User Guide: High-Level Synthesis (UG902) (2017)
- Generating Configurable Hardware from Parallel Patterns (2016)
- Darkroom: compiling high-level image processing code into hardware pipelines (2014)
- Bambu: A modular framework for the high level synthesis of memory-intensive applications (2013)
- Halide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines (2013)
- synASM: A High-Level Synthesis Framework With Support for Parallel and Timed Constructs (2012)
- LegUp: high-level synthesis for FPGA-based processor/accelerator systems (2011)
- A Compiler Intermediate Representation for Reconfigurable Fabrics (2008)
- AutoPilot: A Platform-Based ESL Synthesis System (2008)
- Kiwi: Synthesis of FPGA Circuits from Parallel Programs (2008)
- AHIR: A Hardware Intermediate Representation for Hardware Generation from High-level Programs (2007)
- An efficient and versatile scheduling algorithm based on SDC formulation (2006)
- SPARK: A Parallelizing Approach to the High-Level Synthesis of Digital Circuits (2004)
- LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation (2004)
- Bluespec System Verilog: efficient, correct RTL from high level specifications (2004)
- Formal Behavioural Synthesis of Handel-C Parallel Hardware Implementations from Functional Specifications (2003)
- A hierarchical CDFG as intermediate representation for hardware/software codesign (2002)
- Theory of latency-insensitive design (2001)
- SystemC - a modeling platform supporting multiple design abstractions (2001)
- Silicon C: A Hardware Backend for SUIF (1998)
- Analyzing programs with explicit parallelism (1992)
- An intermediate representation for behavioral synthesis (1991)
- Why systolic architectures? (1982)