Dissertation Defense

Compiling Stream Applications for Heterogeneous Architectures

Amir Hossein Hormati

Support for parallelism in hardware has greatly evolved in the past decade
as a response to the ever-increasing demand for higher performance and
better power efficiency in different application domains. Heterogeneous
processing systems have become the industry standard in almost every
segment of the computing market from servers to mobile systems. Besides
shared/distributed memory processors, the current trend is to use hardware
components such as field programmable gate arrays (FPGAs), single instruction
multiple data (SIMD) units and graphics processing units (GPUs) in heterogeneous

As a result of this shift, extracting maximum performance requires
compilation to highly heterogeneous architectures that include components
with different memory and computation models. Although there has been
significant amount of research on how to program each of these components
individually, targeting a heterogeneous system without specializing an
application to each component separately is still an open problem. To
efficiently exploit future heterogeneous systems, it is necessary
to have a unified programming model and compilation system to target
various components.

In this work, we first focus on enabling a write-once programming paradigm
in the context of streaming for various components of the heterogeneous
systems. We mainly focus on FPGAs, SIMD engines and GPUs as these
components will play an important role in accelerating various
parts of applications on heterogeneous systems. First, we introduce
several compiler optimizations that facilitate both portability and
efficiency. As a result of our compilation system, programmers can write
a program only once and efficiently run it on different components of
the system.

Second, we focus on an important challenge that arises in heterogeneous
systems when there are dynamic resource changes. The ability to dynamically
adapt a running application to a target architecture in the face of
changes in resource availability (e.g., number of cores, available
memory or bandwidth) is crucial to a wider adoption of heterogeneous
architectures. In this work, we introduce a hybrid flexible
compilation framework that facilitates dynamic adaption of applications
to the changing characteristics of the underlying architecture.

Sponsored by

Scott Mahlke