10:00
14:00

Au cours des dernières décennies, afin de répondre aux demandes croissantes en puissance de calcul, les systèmes de calcul haute performance se sont dotés d'architectures de plus en plus complexes. Les architectures récentes intègrent désormais des accélérateurs tels que les FPGA et GPU, du multi-GPU, ainsi que des topologies d'interconnexion complexes. Cependant, si cela permet d'atteindre des performances optimales sans précédent, exploiter pleinement ces architectures devient de plus en plus complexe. Notamment, l'écart croissant entre la performance des coeurs et la bande passante des bus mémoire, ainsi que l'introduction des effets NUMA (Non Uniform Memory Access) limitent les performances des applications gourmandes en mémoire, les rendant "memory-bound". Dans ce contexte, les applications gourmandes en mémoire, ou toutes phases phase de calcul gourmandes en mémoire au sein d'une application, atteindront souvent de meilleures performances et une meilleure effcacité énergétique sur un sous-ensemble des ressources disponibles, utilisant ainsi moins de coeurs et d'accélérateurs, et donc réduisant la quantité d'accès aux données requis et évitant les effets NUMA. Cependant, trouver un ensemble optimal de ressources pour exécuter ces applications ajoute un autre défi d'optimisation pour les développeurs, en particulier lorsqu'ils envisagent plusieurs architectures, car cet ensemble optimal variera en fonction de la topologie de l'architecture cible. Pour alléger cette charge, nous présenterons dans cette thèse deux heuristiques d'ajustement des ressources dynamiques, capables de choisir de manière transparente un ensemble efficace de GPU pour exécuter des applications itératives. Cette heuristique exploite à la fois des mesures de performances en ligne et l'observation des schémas d'accès aux données, ainsi que les informations sur la topologie de l'architecture cible, afin d'explorer et trouver le meilleur ensemble de ressources sans entraîner de surcoût significatif, indépendamment de l'architecture. Nous validons nos heuristiques sur deux groupes de benchmarks et trois architectures. Le premier groupe de benchmarks évalue la précision de nos heuristiques. Nous avons constaté que l'on trouve la meilleure ou la deuxième meilleure configuration dans 98, 33% des cas, sans jamais sélectionner une configuration plus lente de plus de 9% par rapport à la configuration optimale. Le deuxième groupe de benchmarks compare nos heuristiques à des implémentations naïves. Nos heuristiques surpassent les heuristiques naïves dans la majorité des scénarios. Nous observons également une amélioration de l'efficacité énergétique proportionnelle à l'accélération obtenue. Enfin, nos heuristiques atteignent au moins 92, 6% des performances maximales observées sur tous les benchmarks, quelles que soient les architectures ciblées, ce qui indique une bonne portabilité des performances.

Amphi LaBRI