Le monde du Calcul Haute Performance ne cesse d’évoluer, en proposant des modèles de programmation parallèles vastes et variés. Pour s’adapter aux exigences de l’exascale en terme de puissance de calcul et de traitement rapide. Le modèle de programma- tion parallèle le plus utilisé est le Message Passing Interface (MPI). Le standard MPI a été utilisé dans le HPC pendant des décennies. Le protocole de communication point à point send/receive, appelé two-sided MPI, est largement utilisé et privilégié dans les applications. Une alternative à ce modèle de communication point à point est les com- munications one-sided, principalement implémenté dans les langages et bibliothèques PGAS (Partitioned Global Address Space). Le standard MPI-3, qui a été présenté en Septembre 2012, a inclus une mise à jour importante des communications one-sided dans MPI, aussi appelées les RMA (Remote Memory Access) et adoptées par le standard de- puis MPI-2, pour fournir plus de performance et introduire de nouveaux modes d’accès aux données. Cependant, les performances des communications one-sided restent loin d’être celles attendues. Développer un programme parallèle est souvent plus difficile mais plus performant dans de la mémoire partagée plutôt que d’utiliser des transferts send/receiv pour échan- ger des données, les processus peuvent implicitement communiquer dans la mémoire partagée avec une utilisation de certains mécanismes de synchronisation (verrous, séma- phores..) pour garantir un accés sans concurrence à la partie mémoire souhaitée.
Dans ces travaux de recherche nous allons principalement nous intéresser au modèles de programmation à mémoire distribuée et globalement adressable MPI-RMA dont le principe est de designer un espace mémoire virtuel global et partagé dans les systèmes à mémoire distribuée, ce qui permet aux processus de communiquer à travers cette mémoire. Bien que le modèle PGAS existe depuis très longtemps, et promet plus d’asynchronisme. Ce modèle reste peu utilisé par la communauté du HPC à cause de plusieurs raisons notamment les modes de synchronisation requis pour sécuriser le programme. Comme le modèle PGAS propose un concept de programmation en mémoire partagée dans de la mémoire distribuée. Les problèmes de concurrence d’accès s y appliquent. Pour cette raison la programmation PGAS peut se révéler très difficile, car l’utilisateur a la responsabilité de gérer explicitement tous les accès mémoire pour garantir la co- hérence du programme. Il est donc intéressant pour les programmeurs d’applications, d’avoir des outils qui leur permettent de faciliter la programmation. De développer des codes correctes et efficaces.
Dans le cadre de ces travaux de recherche l’objectif principal est de développer une analyse dynamique à l’exécution, et une analyse statique à la compilation, pour vérifier les codes des applications PGAS. Cette analyse mixte permet d’exploiter les avantages des deux approches. une approche dynamique qui repose sur des exécutions concrètes qui dépendent d’un seul jeu d’entrée, et donc se limiter à détecter que les erreurs présentes dans l’exécution analysée. Une approche statique qui ne dépend pas du jeu d’entrée et offre une vue globale du code, et considère tous les chemins d’exécution possibles. Durant cette thèse nous avons developpé un outil qui regroupe les deux analyses statique et dynamique appelé RMA-Analyzer. Il a été propsé dans but d’aider à la programmation de codes MPI-RMA, notamment en proposant une aide avancée à l’uti- lisateur dans la détection d’erreurs de concurrence connus comme accès illégaux liés aux applications MPI-RMA. Dans le but de faciliter la programmation aux utilisateurs, avec une aide dynamique sur la réalité et l’origine des éventuels blocages en MPI-RMA.