Modeling and Simulation of a Dynamic Task-Based Runtime System for Heterogeneous Multi-Core Architectures
Résumé
Multi-core architectures comprising several GPUs have become mainstream in the field of High-Performance Computing. However, obtaining the maximum performance of such heterogeneous machines is challenging as it requires to carefully offload computations and manage data movements between the different processing units. The most promising and successful approaches so far rely on task-based runtimes that abstract the machine and rely on opportunistic scheduling algorithms. As a consequence, the problem gets shifted to choosing the task granularity, task graph structure, and optimizing the scheduling strategies. Trying different combinations of these different alternatives is also itself a challenge. Indeed, getting accurate measurements requires reserving the target system for the whole duration of experiments. Furthermore, observations are limited to the few available systems at hand and may be difficult to generalize. In this research report, we show how we crafted a coarse-grain hybrid simulation/emulation of StarPU, a dynamic runtime for hybrid architectures, over SimGrid, a versatile simulator for distributed systems. This approach allows to obtain performance predictions accurate within a few percents on classical dense linear algebra kernels in a matter of seconds, which allows both runtime and application designers to quickly decide which optimization to enable or whether it is worth investing in higher-end GPUs or not.
Les architectures multi-cœurs comprenant plusieurs GPU sont devenues courantes dans le domaine du calcul à hautes performances (HPC). Cependant, tirer le maximum de performance de telles architectures hétérogènes est un défi qui nécessite d'ordonnancer précisément les calculs aux différentes unités de traitement, ainsi que les transferts de données afférents. Les approches les plus prometteuses reposent sur des intergiciels (runtime) à base de tâches qui présentent une abstraction de la machine sur laquelle ces tâches sont ordonnancées de manière opportuniste. En conséquence, toute la difficulté devient de choisir la granularité des tâches, la structure du graphe de tâches et d'optimiser les algorithmes d'ordonnancement. L'évaluation des combinaisons de ces différents paramètres est un défi en soi. En effet, l'obtention de mesures précises nécessite l'exclusivité d'accès aux ressources pendant la totalité des expériences. De plus, ces observations étant limitées aux quelques systèmes disponibles il peut être difficile d'en tirer des conclusions générales. Dans ce rapport de recherche, nous montrons comment nous avons simulé/émulé StarPU, un runtime dynamique pour architecture hybride, à l'aide de SimGrid, un simulateur versatile d'architectures distribuées. Cette approche permet d'obtenir très rapidement des prédictions de performances précises à quelques pour cent près sur des noyaux d'algèbre linéaire dense. Ceci permet aux développeurs de l'application et du runtime de décider rapidement quelle optimisation activer ou d'évaluer l'opportunité de faire évoluer l'architecture.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...