On the Interactions between HPC Task-based Runtime Systems and Communication Libraries
De l'interaction entre les supports d'exécution à tâches HPC et les bibliothèques de communications
Résumé
Supercomputers are used to solve complex and demanding computational problems (simulations, climate and weather forecasting, modelling, etc), impossible to run on regular computers. These supercomputers are composed of many powerful computers, interconnected through a network. While the power of thesesupercomputers increases over time, it becomes more and more challenging to develop applications taking benefit from all offered computing power. Indeed, many aspects have to be considered by the developer: heterogeneous computing units programmed in different manners, memory hierarchy and transfers, network communications, scheduling, etc. To overcome these challenges, task-based runtime systems have emerged. They model applications by graph of tasks: sub-computations and dependencies between them form a graph. The programmer has to provide the implementations of the tasks for eachtargeted computing unit, express dependencies between the tasks and then the runtime system is in charge of the application execution: scheduling tasks on different computing units, performing required memory movements between memories and network transfers, etc.In this thesis, we explore the possible interactions between a task-based runtime system and the communication library it relies on to perform network transfers. The goal is to make these two software layers more collaborate, to improve performance of executed applications. To understand and analyze theinteractions between the runtime systems and communications, tracing applications is a powerful technique. However, it can have some limitations. Thus, we first evaluate sources of performance overhead when tracing applications, propose solution to alleviate them and evaluate the impact of clock synchronization accuracy for distributed application tracing. Then, as a positive interaction between the task-based runtime system and the communication library, we propose a solution to efficiently send the same piece of data to several nodes, coping with the constraints of the considered runtime system. On the other hand, we also consider possible negative interactions, by evaluating the different sources of interference between computations and communications being executed in parallel, more or less degrading their respective performance. Since we observe memory contention between computations and communications have the most impact, we finally propose a model predicting the memory bandwidth share between computations and communications, to better understand the behavior of the memory system in case of contention and be able to take into account this phenomenon into decisions of the runtime system. Contributions presented in this manuscript show that improving interactions andcooperation between task-based runtime systems and communication libraries haspotential to increase performance of HPC applications.
Les supercalculateurs sont utilisés pour résoudre des problèmes numériques complexes demandant beaucoup de ressources de calcul (simulations, prévisions météorologiques, modélisations, etc), impossibles à exécuter sur des ordinateurs classiques. Ces supercalculateurs sont composés de nombreux puissants ordinateurs, connectés par un réseau. Bien que la puissance de ces supercalculateurs ne cesse d'augmenter, le développement d'applications exploitant toute leur puissance de calcul est de plus en plus complexe. En effet, de nombreux aspects doivent être considérés: des unités de calculs hétérogènes qui se programment différemment, la hiérarchie mémoire et les transferts de données, les communications réseau, l'ordonnancement, etc. Pour parer à ces difficultés, les supports d'exécutions à tâches ont émergé: ils représentent les applications par des graphes de tâches. Les différentes opérations exécutées par l'application et les dépendances entre elles forment un graphe. Il suffit alors de donner une implémentation de chaque tâche pour les unités de calcul ciblées, les dépendances entre les tâches et le support d'exécution se charge d'exécuter l'application: ordonnancer les tâches sur les différentes unités de calcul, réaliser les transferts mémoire et les communications réseau nécessaires, etc.Dans cette thèse, nous explorons les différentes interactions possibles entre les supports d'exécution à tâches et la bibliothèque de communication utilisée pour réaliser les transferts réseau. L'objectif est de faire plus collaborer ces deux couches logicielles, pour améliorer la performances des applications exécutées. Pour analyser et comprendre les interactions entre les supports d'exécution et les communications, tracer les applications est une technique pertinente, malgré certaines limitations. C'est pourquoi nous commençons par évaluer les surcoûts possibles en termes de performances induits par un système de traces. Nous proposons des techniques pour réduire ces surcoûts et avons également évalué l'impact de la précision de la synchronisation d'horloge pour les traces distribuées. Ensuite, comme interaction positive entre un support d'exécution à tâches et la bibliothèque de communications, nous proposons une solution pour efficacement envoyer une même donnée à plusieurs destinataires, tout en respectant les contraintes du support d'exécution. D'autre part, nous considérons également les éventuelles interactions négatives, en évaluant les différentes sources d'interférences entre les calculs et les communications exécutés en parallèle, dégradant leurs performances respectives. Ayant observé que la contention mémoire entre les calculs et les communications a le plus d'impact, nous proposons finalement un modèle prédisant la répartition de la bande-passante mémoire entre les calculs et les communications. Ce modèle permet de mieux comprendre le comportement du composant mémoire en cas de contention et de prendre en compte ce phénomène dans les décisions du support d'exécution. Les contributions présentées montrent qu'améliorer les interactions entre les supports d'exécutions à tâches et les bibliothèques de communications a du potentiel pour améliorer les performances des applications HPC.
Origine | Version validée par le jury (STAR) |
---|