PLDI 2014 Liquid Metal Tutorial

From Liquid Metal Wiki

Hardware Design for Software Developers Using Liquid Metal[edit]

Tutorial Abstract[edit]

At PLDI, we all know that compiler-optimized code can run more efficiently than an interpreter. The same principle applies in hardware. A general-purpose CPU implements an interpreter for an ISA; like any interpreter, it spends most of its energy decoding and dispatching, fetching operands from storage, and providing abstractions such as threads and address spaces. In contrast, specialized hardware can devote most of its energy to productive computation. As silicon scaling grinds to a halt and power dissipation concerns mount, specialized hardware will become ever more attractive for performance-hungry applications.

Hardware designers overwhelmingly rely on low-level design languages, tools, and environments. A number of tools for High Level Synthesis (HLS) exist -- these generally compile a subset of C directly to hardware. In some ways, the state-of-the-art in high-level synthesis reminds us of the early days of Fortran. For example, HLS languages generally do not support modern programming language abstractions, due to difficulties supporting dynamism in hardware. Critically -- it is not yet generally agreed that compilers can generate hardware competitive with hand designs.

In other ways, the situation differs dramatically from the early days of Fortran. In particular, efficient hardware designs must be highly parallel, so it is not clear that a simple sequential language like a C subset is best. On the other hand, with 50 years of advances in programming languages and compilers, we have a rich toolkit at hand to attack these issues.

In this tutorial, we will give a hands-on introduction to Liquid Metal, an IBM Research project in this space. Liquid Metal provides a Java-like language and a high-level development environment, making hardware design accessible to typical software engineers. In the tutorial, we will focus on compiling for Field Programmable Gate Arrays (FPGAs), powerful reconfigurable devices that implement hardware designs.

Liquid Metal is now publicly available from The tutorial will introduce the language and toolchain, including hands-on lab exercises. We will hold a contest where you have a chance to win your own FPGA.

Are you looking for a research topic? We will also present many interesting topics suitable for programming language researchers. With so many interesting topics and compelling driving forces in the industry, you will learn why compiling to hardware is the future of PLDI.

Please come join us at the tutorial. We assume absolutely no prior knowledge of FPGAs or hardware design.

We look forward to seeing you.

Tutorial Materials[edit]

[| PDF of slides from tutorial presentation]

[| PDF of instructions from tutorial lab exercises]