Mapping Task-based Data-flow Models on Heterogeneous CPU-GPU Systems

Language
en
Document Type
Doctoral Thesis
Issue Date
2017-03-31
Issue Year
2017
Authors
Wu, Hao
Editor
Abstract

Since processor designers are hitting the power wall for performance growth, processor designs are switching to increasing core counts, rather than boosting single-core frequency. This trend leads to multi-core CPUs and many-core GPUs for different application usages. This hardware evolution gives rise to platforms that are equipped with both CPUs and GPUs, namely heterogeneous CPU-GPU systems. In the software domain, exploiting multi-core CPUs to improve program performance has been extensively explored. In addition, a great number of programs, ranging from graphics to general-purpose applications, have exploited GPU devices. An important and challenging question is how to make efficient use of such CPU-GPU platforms in order to maximize system throughput. Firstly, CPUs and GPUs exhibit different performance characteristics in that the optimal workload distribution varies from application to application. For dynamically mapping applications to CPUs and GPUs, it is necessary to consider load balancing and program-execution efficiency on both processor types. Secondly, the discrete memory space on each processor requires programmers to manage memory manually, which hinders programming productivity and requires manual optimization. The data-flow programming model is suitable for addressing these two problems. This model allows programmers to express task definitions and data dependencies between tasks without having to explicitly consider the complexities of the underlying hardware. In this work, I propose and evaluate the mapping of data-flow models to heterogeneous CPU-GPU systems in which both hardware units have discrete memory spaces. In particular, I define a data-flow interface that supports a static data-flow model, whose structure cannot be changed at runtime. Based on this static model, I implement a graph-partition scheduling policy to map workload to CPUs and GPUs, and compare this policy to other approaches. Furthermore, I implement a memory-management library designed to facilitate data-flow models on CPU-GPU systems. Finally, I evaluate the approach and demonstrate via several benchmarks that the proposed system is both effective and efficient.

Abstract

Um mehr Performanz zu erreichen, stoßen Prozessorhersteller mittlerweile an die Grenze, wo erreichbare Prozessorfrequenzen durch die Leistungsaufnahme limitiert sind. Aus diesem Grund findet ein Wechsel hin zur Mehrkernsystemen statt. Dieser Trend führt zu Mehrkern-CPUs und Vielkern-GPUs für verschiedene Anwendungsszenarien. Diese Hardware-Evolution ermöglicht Plattformen, die sowohl mit CPUs als auch mit GPUs ausgestattet sind, sogenannte heterogene CPU-GPU-Systeme. Im Softwarebereich ist die Ausnutzung von Mehrkern-CPUs zur Performanzerhöhung von Programmen weitreichend erforscht. Zusätzlich existiert eine Vielzahl von Programmen, die GPUs aus- nutzen, von Grafik- bis zu Allzweckanwendungen. Eine wichtige und heraus- fordernde Fragestellung ist es, wie man solche CPU-GPU-Plattformen effizient nutzt, um den Systemdurchsatz zu maximieren. Zum einen weisen CPUs und GPUs unterschiedliche Performanzcharakteristiken auf, so dass die optimale Arbeitsverteilung von Anwendung zu Anwendung variiert. Für die dynamische Abbildung von Anwendungen auf CPUs und GPUs ist es notwendig, Lastverteilung und Ausführungseffizienz auf beiden Prozessortypen zu berücksichtigen. Zum anderen erfordert der diskrete Speicherraum auf jedem Prozessor, dass Programmierer den Speicher manuell verwalten, was die Produktivität einschränkt und händische Optimierungen bedingt. Das Datenfluss- Programmiermodell ist geeignet, um diese Probleme zu adressieren. Dieses Modell erlaubt es Programmierern, Aufgabendefinitionen und Datenabhängigkeiten zwischen Aufgaben auszudrücken, ohne explizit die Komplexität der darunterliegenden Hardware-Komponenten berücksichtigen zu müssen. In dieser Arbeit stelle ich die Abbildung von Datenflussmodellen auf het- erogene CPU-GPU-Systeme vor, in denen beide Hardwareeinheiten diskrete Speicherräume haben. Insbesondere definiere ich eine Datenfluss-Schnittstelle, die sich für ein statisches Datenflussmodell eignet, das heißt ein Modell, dessen Struktur zur Laufzeit nicht verändert werden kann. Basierend auf diesem statischen Modell implementiere ich eine Graph-partitionierende Ablaufplanungsstrategie, die Arbeit auf CPUs und GPUs verteilt, und vergleiche diese Strategie mit anderen Ansätzen. Zusätzlich implementiere ich eine Speicherverwaltungsbibliothek, um die Datenflussmodelle auf CPU-GPU-Systemen zu unterstützen. Zuletzt evaluiere ich den Ansatz und demonstriere mittels mehrerer Benchmarks die Effektivität und Effizienz des Systems.

DOI
Faculties & Collections
Zugehörige ORCIDs