[PLDI'18] Spatial

Spatial: a language and compiler for application accelerators

D. Koeplinger, et.al. on June 11, 2018
doi.org
obsidian에서 수정하기

coresp_author: Olukotun

Abstract

This work describes a new domain-specific language and compiler called Spatial for higher level descriptions of application accelerators, and summarizes the compiler passes required to support these abstractions, including pipeline scheduling, automatic memory banking, and automated design tuning driven by active machine learning. Industry is increasingly turning to reconfigurable architectures like FPGAs and CGRAs for improved performance and energy efficiency. Unfortunately, adoption of these architectures has been limited by their programming models. HDLs lack abstractions for productivity and are difficult to target from higher level languages. HLS tools are more productive, but offer an ad-hoc mix of software and hardware abstractions which make performance optimizations difficult. In this work, we describe a new domain-specific language and compiler called Spatial for higher level descriptions of application accelerators. We describe Spatial's hardware-centric abstractions for both programmer productivity and design performance, and summarize the compiler passes required to support these abstractions, including pipeline scheduling, automatic memory banking, and automated design tuning driven by active machine learning. We demonstrate the language's ability to target FPGAs and CGRAs from common source code. We show that applications written in Spatial are, on average, 42% shorter and achieve a mean speedup of 2.9x over SDAccel HLS when targeting a Xilinx UltraScale+ VU9P FPGA on an Amazon EC2 F1 instance.

Figure

figure 1 figure 1

figure 2 figure 2

figure 3 figure 3

figure 4 figure 4

figure 5 figure 5

figure 6 figure 6

figure 7 figure 7

Table

table 1 table 1

table 2 table 2

table 3 table 3

table 4 table 4

Reference

Background

  • [1]

  • (missing reference)

  • (missing reference)

  • (missing reference)

  • (missing reference)

  • (missing reference)

Method

  • [1]

  • (missing reference)

  • (missing reference)

  • (missing reference)

Citation

Background

  • (missing reference)

  • (missing reference)

Method

  • [2]

  • (missing reference)

  • (missing reference)

  • [3]

  • (missing reference)

  • (missing reference)

Result

  • (missing reference)
  1. Chisel: Constructing hardware in a Scala embedded language, 2012, [post]
  2. DSAGEN: Synthesizing Programmable Spatial Accelerators, 2020, [post]
  3. SuSy: A Programming Model for Productive Construction of High-Performance Systolic Arrays on FPGAs, 2020, [post]