DSLs to reconfigurable hardware : design of the spatial language and compiler

Placeholder Show Content

Abstract/Contents

Abstract
In recent years, the computing landscape has seen an increasing shift towards specialized accelerators. Reconfigurable architectures like field programmable gate arrays (FPGAs) are particularly promising for accelerator implementation as they can offer performance and energy efficiency improvements over CPUs and GPUs while offering more flexibility than fixed-function ASICs. Unfortunately, adoption of reconfigurable hardware has been limited by their associated tools and programming models. The conventional languages for programming FPGAs, hardware description languages (HDLs), lack abstractions for productivity and are difficult to target directly from higher level languages. Commercial high level synthesis (HLS) tools offer a more productive programming solution, but their mix of software and hardware abstractions is ad-hoc, making both manual and automated performance optimizations difficult. As demand for customized accelerators has grown, so too has the demand by software engineers and domain experts for domain-specific languages (DSLs) which provide higher levels of abstraction and hence improved programmer productivity. Unfortunately, in the domains of machine learning and data analytics, most domain-specific methods for generating accelerators are focused on library-based approaches which generate hardware on a per-kernel basis, resulting in excessive memory transfers and missing critical cross-kernel optimizations. As DSLs become more ubiquitous, this approach will not scale. This dissertation describes a new system for compiling high-level applications in domain specific languages to hardware accelerator designs that addresses these productivity, generality, and optimization challenges. To improve results above kernel-based approaches when programming in domain-specific languages, we introduce a waypoint between DSLs and HDLs: a new intermediate abstraction dedicated to representing parameterized accelerator designs targeting reconfigurable architectures. Starting from a common intermediate representation for high-level DSLs based on parallel patterns, we first describe the cross-kernel optimizations the system performs and the methods which used to lower the entire application graph into a parameterized design in the intermediate hardware abstraction. We then describe our implementation of this intermediate abstraction, a language and compiler called Spatial. We discuss some of the compiler optimizations Spatial enables, including rapid design parameter tuning, pipeline scheduling, and memory banking and partitioning. The end result is a compiler stack which can take as input a high-level program in a domain-specific language and translate it into an optimized, synthesizable hardware design coupled with runtime administration code for the host CPU.

Description

Type of resource text
Form electronic resource; remote; computer; online resource
Extent 1 online resource.
Place California
Place [Stanford, California]
Publisher [Stanford University]
Copyright date 2019; ©2019
Publication date 2019; 2019
Issuance monographic
Language English

Creators/Contributors

Author Koeplinger, David Alan
Degree supervisor Olukotun, Oyekunle Ayinde
Thesis advisor Olukotun, Oyekunle Ayinde
Thesis advisor Horowitz, Mark (Mark Alan)
Thesis advisor Zaharia, Matei
Degree committee member Horowitz, Mark (Mark Alan)
Degree committee member Zaharia, Matei
Associated with Stanford University, Department of Electrical Engineering.

Subjects

Genre Theses
Genre Text

Bibliographic information

Statement of responsibility David Alan Koeplinger.
Note Submitted to the Department of Electrical Engineering.
Thesis Thesis Ph.D. Stanford University 2019.
Location electronic resource

Access conditions

Copyright
© 2019 by David Alan Koeplinger
License
This work is licensed under a Creative Commons Attribution Non Commercial 3.0 Unported license (CC BY-NC).

Also listed in

Loading usage metrics...