Les architectures de calcul haute performance évoluent en permanence afin d’offrir des capacités de calcul, et des efficacités énergétiques, toujours plus importantes. Ceci concerne d’une part les CPU multi-cœurs, qui comportent de plus en plus de cœurs et des unités vectorielles toujours plus grandes, et d’autre part les diverses architectures many-core, potentiellement hétérogènes (GPU, processeurs Xeon Phi . . . ). En prenant en compte la performance, l’efficacité énergétique ou la portabilité des performances, et en nous appuyant sur des paradigmes de programmation récents et appropriés, nous avons apporté des contributions algorithmiques permettant d’adapter au mieux des applications de référence, ou spécifiques, en calcul scientifique à ces architectures haute performance. Nos travaux ont été structurés selon les trois axes de recherche suivants : (i) concevoir des algorithmes pour les architectures many-core via du parallélisme massif, pour les architectures multi-cœurs via du parallélisme de tâches, ou pour les deux via des algorithmes hybrides ; (ii) réduire la divergence au sein des calculs vectoriels sur les architectures haute performance ; et (iii) tirer parti des nouvelles architectures hétérogènes pour des applications en calcul scientifique. Nous présentons ici nos contributions algorithmiques, leur contexte interdisciplinaire, ainsi que les fortes interactions qu’elles requièrent entre les caractéristiques de l’application, l’algorithmique, la programmation et l’architecture matérielle.
defended on 05/07/2018