Thèse de Philippe Swatvagher : "De l'interaction entre les supports d'exécution à tâches HPC et les bibliothèques de communications"
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 these supercomputers 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 each targeted 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 the interactions 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 interferences 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 behaviour 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 and cooperations between task-based runtime systems and communication libraries has potential to increase performance of HPC applications.