Abstract (eng)
The increasing heterogeneity in modern hardware architectures promises significant performance gains as well as a better performance-to-power ratio. New hardware appears to be leaning towards hybrid many-core architectures that combine conventional multi-core systems with accelerators, such as GPUs , Intel Xeon Phis, etc. However, developing software that can fully exploit the potential computing power proves to be considerably complex and the programmability of such systems is significantly hindered. Consequently, programmers are forced to explicitly deal with distinct memory spaces, locality, load balancing, while using different programming models and parallelization strategies. In order to enable efficient execution and increase programmability, many approaches combine higher-level abstractions in programming models with compilers and runtimes systems.
This thesis presents an approach towards the support for high-level pipeline parallel patterns on heterogeneous many-core architectures. It builds on top of a component-based, task-parallel programming model developed within the European project PEPPHER. In this context tasks relate to the components that may have multiple implementation variants tailored for different execution units of hybrid many-core system. A sophisticated heterogeneous runtime system is responsible for mapping suitable component implementation variants and scheduling their execution to different execution units. On top of these foundations, we have developed a framework comprised of a high-level coordination language, a source-to-source compiler and the coordination layer for pipelining that relies on a heterogeneous runtime system to perform dynamic scheduling in a performance and resource efficient way. We evaluate the approach on two different heterogeneous systems and demonstrate its viability and effectiveness with two benchmarks from the areas of computer vision and bioinformatics.