Skip to content. | Skip to navigation

Emergences

Lettre d'information n° 43

Image emergences pour impression
Personal tools
You are here: Home 2016 Lettre d'information n° 43 Améliorer les performances du tandem processeur-compilateur
Document Actions

Améliorer les performances du tandem processeur-compilateur

Nouvelle équipe de recherche au centre Inria Rennes - Bretagne Atlantique, Pacap étudie la performance des architectures d'ordinateurs et la façon dont les programmes informatiques pourraient être mieux compilés pour en exploiter la pleine puissance, comme l'explique son responsable, le scientifique Erven Rohou.

Nouvelle équipe de recherche au centre Inria Rennes - Bretagne Atlantique, Pacap étudie la performance des architectures d'ordinateurs et la façon dont les programmes informatiques pourraient être mieux compilés pour en exploiter la pleine puissance, comme l'explique son responsable, le scientifique Erven Rohou.

Douze milliards d'instructions à la seconde. C'est la puissance de calcul des processeurs qui peuplent actuellement nos ordinateurs. Un bond phénoménal en une décennie. Mais ces progrès se voient instantanément absorbés par de nouveaux usages et des logiciels toujours plus gourmands. Le recours aux infrastructures multicœurs ne résout pas tout. Par ailleurs, bon nombre de logiciels n'exploitent pas encore le parallélisme. La quête de performance continue donc bon train. Et c'est précisément la spécialité de l'équipe de recherche Pacap (1). “Nous nous situons dans la continuité de la précédente équipe ALF qui a fonctionné pendant huit ans, indique Erven Rohou, responsable de la nouvelle  équipe.On y retrouve d'ailleurs les mêmes chercheurs permanents.

Première préoccupation : “mesurer la performance. En fonction du contexte, celle-ci prend différentes formes. Cela peut être la latence : combien de temps faut-il pour effectuer un calcul ? Ou encore le débit : combien de calculs puis-je effectuer dans un temps donné ? C'est typiquement la question pour les GPU, ces cartes graphiques dont l'objectif est de faire le maximum de calculs par unité de temps. Dans d'autres cas, ce qui prime c'est la garantie de pire temps. Il ne s'agit pas alors d'aller le plus vite possible, mais de garantir en combien de temps le calcul va s'exécuter dans le pire des cas. C'est primordial pour l'avionique, les centrales nucléaires, l'automobile... On doit pouvoir prouver que tel système va réagir en tant de millisecondes quoi qu'il arrive. Au delà de ce seuil, c'est dramatique. La performance peut aussi s'appréhender sous l'angle de la consommation électrique. En général, plus on va vite, plus on consomme. À l'inverse, diminuer la fréquence permet d'économiser de l'énergie. Il existe encore une autre façon de voir les choses, c'est la complexité du système. Si un constructeur parvient à effectuer un calcul dans la même unité de temps mais avec un circuit plus simple, c'est moins cher et plus facile à vérifier.

Pour appréhender ces aspects de mesures, les scientifiques de l'équipe se sont taillés toute une série d'outils logiciels spécifiques. L'un d'entre eux, Tiptop, se trouve même d'ailleurs désormais dans les distributions Linux. À la demande de l'utilisateur, il affiche les performances du processeur dans une fenêtre texte. Les chercheurs ont aussi conçu Barra, un simulateur pour étudier comment se comporte un programme sur un GPU. “Cela permet de voir si une modification du matériel aurait du sens, ce qui peut intéresser des constructeurs.  Autre outil dans la boîte : Heptane qui mesure le pire temps pour un tandem processeur/programme. Sans oublier Padrone, un “outillage générique qui permet d'observer le code exécutable et fournit des mécanismes pour le modifier.

Adapter le programme au processeur

Dans la vie quotidienne, cette performance processeur/programme se voit impactée par deux facteurs. Tout d'abord la grande hétérogénéité des processeurs sur le marché. “Combien de cœurs ? Quel niveau de parallélisme ? Quelle fréquence ? Est-ce que tout marche bien ? Par ailleurs, si j'effectue mes calculs sur le cloud, je ne sais pas sur quelle machine je vais arriver. Il faut donc que le programme soit capable de s'adapter. Si on cible la machine la moins performante, on aura l'assurance d'un bon fonctionnement à tous les coups. Mais en même temps, c'est dommage car on va peut-être tomber sur une meilleure machine dont on ne pourra pas utiliser toute la puissance.

Deuxième facteur : l'imperfection des logiciels. “D'une part, ils n'utilisent pas forcément les meilleurs algorithmes. En l'occurrence, cela n'est pas du tout de notre ressort mais concerne le génie logiciel. D'autre part, ces programmes ne sont pas forcément compilés d'une façon idéale pour tirer pleinement parti de l'architecture. Et là, nous pouvons envisager de faire quelque chose. Une des solutions que nous proposons consiste à adapter le programme au dernier moment (2). Juste avant de le lancer sur la machine, nous allons aller dans le code exécutable pour le modifier de façon à utiliser au mieux le matériel existant.  Exemple ? “Certains processeurs effectuent en une seule instruction à la fois une addition et une multiplication. Mais pas tous. Si j'arrive sur une telle machine, cela va être intéressant de détecter cette capacité et de modifier le programme de façon à remplacer deux instructions par une. On va réaliser un gain de temps. Nous travaillons actuellement sur un prototype pour effectuer cette optimisation à la volée.

------
Notes:

 (1) Pacap est une équipe-projet commune à l'Irisa (UMR 6074).

 (2) Lire : Dynamic Re-Vectorization of Binary Code, par Nabil Hallou, Erven Rohou, Philippe Clauss et Alain Ketterlin. Conférence Samos XV, Juillet 2015, Agios Konstantinos, Grèce.

 (3) Cidre est une équipe-projet Inria, Supelec, Université Rennes 1 et CNRS, commune à l'Irisa (UMR 6074).