Skip to content. | Skip to navigation

Emergences

Lettre d'information n° 11

Image emergences pour impression
Personal tools
You are here: Home 2010 Lettre d'information n° 11 Libérer toute la puissance des multicœurs
Document Actions

Libérer toute la puissance des multicœurs

Les processeurs multicœurs se banalisent. Mais un problème fondamental contrarie l'augmentation des performances et la démocratisation des architectures parallèles. Une équipe commune Inria et Université Rennes 1 envisage de nouvelles stratégies pour sortir de l'impasse. Rencontre avec André Seznec, responsable de l'équipe ALF.

Les processeurs multicœurs se banalisent. Mais un problème fondamental contrarie l'augmentation des performances et la démocratisation des architectures parallèles. Une équipe commune Inria  et Université Rennes 1 envisage de nouvelles stratégies pour sortir de l'impasse. Rencontre avec André Seznec, responsable de l'équipe ALF.

 

 "La loi d'Amdahl ? Elle est compréhensible par tout le monde, rassure André Seznec. Dans la plupart des applications, nous avons une partie contrôle  et  une partie calcul. Souvent, la partie qui peut être réécrite pour s’exécuter en parallèle concerne cette partie  calcul. En revanche, le contrôle, lui,  reste plutôt séquentiel. Depuis 50 ans, on développe les applications suivant ce modèle. Sauf que d’ici quelques années 100 processeurs tiendront  sur un seul composant. Résultat : environ 95% du code s'exécutera en parallèle sur ces 100 processeurs. Et puis, il reste toujours 5% en séquentiel exécuté sur un seul processeur." Du coup, "quand une  seconde suffit pour effectuer 95% du travail, il faut 5 longues secondes pour les 5% restants. C'est ça la loi d'Amdahl  : un vrai bouchon !" Un goulet qui étrangle la performance en raison de la structure même du code.

Devant ce constat, l'équipe ALF   se situe un peu à contre-courant de ceux qui veulent développer  des applications parallèles. Elle part du fait que la plupart des développeurs  continueront à programmer en séquentiel. "La majorité des applications sont et resteront séquentielles, même si on en  parallélise certaines parties. A partir de là, ce qui nous intéresse, c'est ce fameux bouchon. Nous cherchons comment accélérer les applications, soit par l'architecture en élaborant des processeurs plus efficaces, soit en développant des techniques de compilation et de  génération de code plus efficaces. Par exemple, sur une plaque pouvant accueillir 100 processeurs, nous proposons de n'en  mettre par exemple que 50 d'un modèle normal, standard. Mais nous consacrerons le reste de la plaque à essayer d'accélérer la partie séquentielle en y installant un seul processeur dirigée vers la performance  ultime sur le code séquentiel. La température est un autre de nos soucis. Pour maintenir les performances, les processeurs chauffent terriblement et de plus en plus. Une de nos pistes consiste à les faire travailler alternativement pour qu'ils trouvent le temps de refroidir." La méthode permet en outre d'élever la fréquence.

Compilation et prédictabilité

"Voilà pour notre approche au niveau architecture. Ensuite, on s'intéresse à la compilation. Jusqu'à présent, les applications parallèles étaient très spécialisées, répandues surtout dans le monde scientifique. Maintenant, si tout un chacun s'offre un ordinateur à 100 processeurs, il faudra bien que les applications s'adaptent." Traitement de texte, logiciel  de traitement d'images, la liste est longue. "Deux problèmes se posent. D'abord la portabilité de l'application fonctionnelle. Pas évident à résoudre. Mais il y a pire : la perte de performance ! Quand un utilisateur achète un nouveau PC, il n'a pas envie de payer de nouvelles versions pour tous ses logiciels. Or, sa nouvelle machine ne va pas offrir de meilleures performances aux vieilles applications optimisées pour la génération précédente. Non seulement elles ne tournent pas plus vite, mais peut-être même moins vite. Déception pour l'acheteur ! On n'y est pas encore, mais le marché passera obligatoirement par cette phase de transition qui devrait durer des années. Voilà un problème auquel nous cherchons des solutions."

Troisième et dernier point : la prédictabilité. "Une des questions clés pour l'utilisateur concerne le temps de réponse. Dans certains contextes, il faut garantir du temps réel. Freinage de voiture par exemple. Or les architectures parallèles ont le mauvais goût d'être peu prévisibles." Pourquoi ? "Parce qu'elles partagent beaucoup de choses : l'accès aux données, à la mémoire... Plusieurs processeurs peuvent souhaiter passer par le même canal au même instant. Il y a un arbitrage, des incertitudes, du temps d'attente. Donc pour dimensionner un système, il va falloir se baser sur le pire des scénarios. Pas facile à estimer..."