Nassim Halli - Optimisation de code pour application Java haute-performance

12:00
Tuesday
25
Oct
2016
Organized by: 
Nassim Halli
Speaker: 
Nassim Halli
Teams: 

Lieu de soutenance :

Campus Minatec (17 rue des Martyrs 38054 Grenoble) - Bâtiment 50C - salle 203/206 au 1ère étage

 

Membres du jury :

  • M. William Jalby, professeur à l’Université de Versailles - St-Quentin-en-Yvelines, président ;
  • M. Gaël Thomas, professeur à Télécom SudParis, rapporteur ;
  • M. Denis Barthou, professeur à l’Université de Bordeaux, rapporteur ;
  • M. Sébastien Bayle, responsable de l’équipe de développement à Aselta Nanographics, examinateur ;
  • M. Jean-François Méhaut, professeur a l’Université Grenoble Alpes, directeur de thèse ;
  • M. Henri-Pierre Charles, directeur de recherche au CEA LIST, co-directeur de thèse.

Java est à ce jour l'un des langages, si ce n'est le langage, le plus utilisé toutes catégories de programmation confondues et sa popularité concernant le développement d'applications scientifiques n'est plus à démontrer. Néanmoins son utilisation dans le domaine du Calcul Haute Performance (HPC) reste marginale même si elle s'inscrit au cœur de la stratégie de certaine entreprise comme Aselta Nanographics, éditeur de l'application Inscale pour la modélisation des processus de lithographie par faisceaux d'électron, instigateur et partenaire industriel de cette thèse.
Et pour cause, sa définition haut-niveau et machine-indépendante, reposant sur un environnement d'exécution, parait peu compatible avec le besoin de contrôle bas-niveau nécessaire pour exploiter de manière optimale des architectures de microprocesseurs de plus en plus complexes comme les architectures Intel64 (implémentation Intel de l'architecture x86-64).
Cette responsabilité est entièrement déléguée à l'environnement d'exécution, notamment par le biais de la compilation dynamique, chargée de générer du code binaire applicatif à la volée. C'est le cas de la JVM HotSpot, au centre de cette étude, qui s'est imposée comme l'environnement de référence pour l'exécution d'applications Java en production.
Cette thèse propose, dans ce contexte, de répondre à la problématique suivante : comment optimiser les performances de code séquentiel Java plus particulièrement dans un environnement HotSpot/Intel64 ?
Pour tenter d'y répondre, trois axes principaux ont été explorés. Le premier axe est l'analyse des performances du polymorphisme, mécanisme Java haut-niveau omniprésent dans les applications, dans le lequel on tente de mesurer l'impact du polymorphisme sur les performances du code et d'évaluer des alternatives possibles. Le second axe est l'intégration de code natif au sein des applications - afin de bénéficier d'optimisations natives - avec prise en compte du compromis coût d'intégration/qualité du code. Enfin le troisième axe est l'extension du compilateur dynamique pour des méthodes applicatives afin, là encore, de bénéficier d'optimisations natives tout en s'affranchissant du surcout inhérent à l'intégration de code natif.
Ces trois axes couvrent différentes pistes exploitables dans un contexte de production qui doit intégrer certaines contraintes comme le temps de développement ou encore la maintenance du code. Ces pistes ont permis d'obtenir des gains de performances significatifs sur des sections de code applicatif qui demeuraient jusqu'alors très critiques.