Heterogeneous computing platforms support the traditional types of
parallelism, such as e.g., instruction-level, data, task, and pipeline
parallelism, and provide the opportunity to exploit a combination of
different types of parallelism at different platform levels. The
architectural diversity of platform components makes tapping into the
platform potential a challenging programming task. This thesis makes an
important step in this direction by introducing a novel methodology for
automatic generation of structured, multi-level parallel programs from
sequential applications. We introduce a novel hierarchical intermediate
program representation (HiPRDG) that captures the notions of structure
and hierarchy in the polyhedral model used for compile-time program
transformation and code generation. Using the HiPRDG as the starting
point, we present a novel method for generation of multi-level programs
(MLPs) featuring different types of parallelism, such as task, data, and
pipeline parallelism. Moreover, we introduce concepts and techniques for
data parallelism identification, GPU code generation, and asynchronous
data-driven execution on heterogeneous platforms with efficient
overlapping of host-accelerator communication and computation. By
enabling the modular, hybrid parallelization of program model components
via HiPRDG, this thesis opens the door for highly efficient tailor-made
parallel program generation and auto-tuning for next generations of
multi-level heterogeneous platforms with diverse accelerators.</table