Conception de bibliothèques d'instrumentation dynamique pour Valgrind, LLVM ou Intel Pin afin d'analyser les opérations en arithmétique flottante

Dans le cadre d’outils de compilation ou de recompilation dynamique permettant l’analyse de la propagation d’erreur d’arrondis, l’objectif du stage est d’implémenter et intégrer un outil d’instrumentation tout en limitant l’impact sur les performances.

Interflop est un projet de recherche financé par l’ANR qui vise à fournir des outils et méthodologies pour analyser et corriger les problèmes dûes aux erreurs d’arrondi en calcul flottant. Différents outils ont été développés par les partenaires d’Interflop. Nous nous interressons ici en particulier à trois outils :

  • Verificarlo, une extension de LLVM développée par l’UVSQ,
  • Verrou, une extension de Valgrind développée par EDF,
  • Pene, une extension de Intel pin développée par ANEO. Ces trois outils intègrent des bibliothèques d’analyse qui pourraient être mutualisées. Une première version d’API commune a été établie et des premières intégrations croisées de ces bibliothèques ont déjà été réalisés. Il a alors été établi que pour tirer au mieux profit des capacités des trois outils, il convient de faire évoluer cette API. Ces évolutions devront permettre de minimiser l’impact sur les performances. En particulier, elles devront permettre l’exécution de codes multithread.

L’objectif du stage sera de définir une nouvelle API commune permettant de faciliter l’intégration des bibliothèques d’analyse au sein des trois outils.

Le stagiaire commencera par effectuer une intégration d’une nouvelle bibliothèque d’analyse dans l’ensemble des trois outils. Il sera pour cela assisté par les développeurs de ces outils (cf. contacts). Une fois les contraintes d’intégration identifiées, le stagiaire travaillera à définir la nouvelle API. L’intégration d’une ou plusieurs bibliothèques existantes permettra de valider l’adéquation de la nouvelle API. Certaines de ces bibliothèques pourront nécessiter de prendre en compte des aspects multithreadés.

Mots-clés : valgrind, llvm, Intel pin, programmation en mémoire partagée, arithmétique flottante, open-source

Pré-requis : C ou C++, développement sous environnements GNU/linux, programmation multithread

Compétences optionnelles : docker, programmation système, assembleur x86

Contacts :

Candidater via mail sur recrut’at’aneo.fr

  • Wilfried Kirschenmann - wil’at’aneo.fr
  • Bruno Lathuilière - bruno.lathuiliere’at’edf.fr
  • Pablo Oliveira - pablo.oliveira’at’uvsq.fr

Lieu du stage : Boulogne Billancourt

Référence :