CE25 - Infrastructures de communication hautes performances (réseau, calcul et stockage), Sciences et technologies logicielles

Optimisation orientée performance et précision des formats de données dans les codes numériques – PADOC

Résumé de soumission

Le développement de codes numériques efficaces et précis est une tâche
difficile. En effet elle requiert de connaître parfaitement la
micro-architecture cible, le comportement de ses unités de calcul et son jeu
d'instructions. Mais elle requiert également d'analyser soigneusement les
contraintes de précision sur toutes les données du code et la précision de
calcul afin d'atteindre une précision de sortie donnée. Généralement, ces deux
critères sont traités de manière séparée. Et nous constatons que les données de
calcul sont souvent sur-dimensionnées, principalement dû au manque d'expertise
des développeurs. Les codes ne profitent alors pas pleinement des capacités de
la micro-architecture.

Pour améliorer la performance des applications et réduire leur temps
d'exécution, une approche consiste à diminuer la précision de certaines données
bien choisies du code. Ceci permet d'exploiter le parallélisme fourni par
certaines architectures modernes, grâce à l'utilisation d'instructions
vectorielles. Toutefois décider quelles données peuvent être adaptées, sans trop
dégrader la précision du résultat, est une tâche compliquée, même pour les
experts en logiciels numériques. Et cette difficulté augmente avec la taille des
applications.

L'objectif du projet PADOC consiste à concevoir des outils pour aider les
développeurs à adapter automatiquement le format des données flottantes dans un
code numérique. L'intérêt est d'exploiter au mieux les unités de calcul de
l'architecture cible, et ainsi améliorer les performances du code, tout en
garantissant une certaine précision sur le résultat. Des outils existent déjà
pour résoudre ce problème. Cependant ils ont les inconvénients suivants :
Premièrement ils dépendent d'un jeu de données, non suffisamment représentatif
des données sur lesquelles le code sera utilisé. Ainsi les transformations
peuvent ne plus être valides pour d'autres données. Deuxièmement, ils ne
prennent pas en compte les caractéristiques de la micro-architecture lors de la
transformation. Les codes fournis peuvent alors ne pas profiter pleinement de
ses capacités. Troisièmement, l'optimisation est effectuée sur toutes les
données du code, même celles pour lesquelles la transformation ne sera pas
pertinente. Pour un grand nombre de données, la combinatoire est très grande, ce
qui entraîne un ralentissement du temps d'optimisation. Par conséquent, notre
objectif est de concevoir des outils d'optimisation pour produire des codes
robustes aux données et optimisés pour une micro-architecture. Mais avant tout,
nous souhaitons accélérer la phase d'adaptation en isolant les données les plus
pertinentes, réduisant alors la combinatoire.

Le flot de conception du projet PADOC prend en entrée un code et renvoie un code
optimisé. Nous souhaitons ici travailler autour de trois axes. Le premier axe
consiste à étudier l'impact de l'adaptation des formats de données sur la
performance. Plus particulièrement, l'objectif est d'isoler dans le code
certaines parties pour lesquelles abaisser la précision des données peut
entraîner une amélioration importante en terme de performance. Le deuxième axe
est d'étudier l'impact de cette adaptation sur la précision du résultat, et la
robustesse aux données des codes optimisés. L'objectif est d'isoler les données
du code dont la précision souffre plus ou moins de l'adaptation de la
précision. Ainsi, nous pourrons décider quelle partie est la plus pertinente
pour le processus d'adaptation. L'objectif du troisième axe est de développer
l'outil d'optimisation globale, et de le valider sur des applications de
simulation, comme CORSIKA. L'idée principale est d'utiliser les connaissances en
termes de précision et de performance des étapes précédentes, afin de
discriminer entre les différentes parties du code. La transformation se fera sur
les parties les plus pertinentes, réduisant ainsi la combinatoire. Nous espérons
alors obtenir une réduction du temps d'adaptation pour les codes numériques.

Coordination du projet

Guillaume Revy (Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier)

L'auteur de ce résumé est le coordinateur du projet, qui est responsable du contenu de ce résumé. L'ANR décline par conséquent toute responsabilité quant à son contenu.

Partenaire

LIRMM Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier

Aide de l'ANR 138 456 euros
Début et durée du projet scientifique : février 2019 - 48 Mois

Liens utiles

Explorez notre base de projets financés

 

 

L’ANR met à disposition ses jeux de données sur les projets, cliquez ici pour en savoir plus.

Inscrivez-vous à notre newsletter
pour recevoir nos actualités
S'inscrire à notre newsletter