



Pour des raisons d'énergie les futurs ordinateurs devront utiliser des accélérateurs pour le calcul comme pour les accès à la mémoire (GPU, TPU, NPU, DMA intelligents). Les application d'IA ont des besoins en calcul intensif à la fois en intensité de calcul et en débits mémoire.
Ces accélérateurs ne se basent pas sur un jeu d'instruction simple (ISA), ils s'affranchissent du modèle de Von Neuman et ils nécessitent d'écrire manuellement du code spécialisé.
Par ailleurs, il est difficile de comparer l'utilisation de ces accélérateurs avec un code utilisant un processeur non spécialisé, les codes sources initiaux étant très différents.
HybroLang est un langage de programmation proche matériel permettant d'exprimer des programmes utilisant toutes les capacités de calcul d'un processeur tout en permettant une spécialisation du code en fonction des données connues à l'exécution.
Le compilateur HybroGen a déjà démontré sa capacité de programmation d'accélérateurs de calcul en mémoire, comme en optimisation de code sur CPU classique en réalisant des optimisations innovantes.
Cette thèse se propose d'étendre le langage HybroLang afin de :
- faciliter la programmation d'application d'IA apportant le support pour des données complexes : stencils, convolution, calcul clairsemé
- permettre la génération de code à la fois sur CPU et avec des accélérateurs matériels en cours de développement au CEA (calcul clairsemé, calcul en mémoire, accès à la mémoire)
- permettre la comparaison d'architectures différentes en partant d'un seul code source d'application
Idéalement un candidat devra avoir des connaissances dans les domaines suivants : architecture des ordinateurs, implémentation de langage de programmation, compilation et optimisation de code.

