Nous suivre Industrie Techno

PROCESSEURS MULTICOEURS ATTENTION DANGER !

Ridha Loukil
Les logiciels actuels n'ont pas été prévus pour tourner sur des processeurs multicoeurs. Pour éviter le ralentissement, ils doivent être parallélisés. Plus simple à dire qu'à faire.

L'informatique vit une crise technologique sans précédent. Alors que les microprocesseurs, qui en constituent le moteur de développement, affichent une puissance toujours croissante, les logiciels tendent curieusement à patiner. La raison tient dans une drôle histoire de coeurs... Pourtant, la loi de Moore ne se dément pas. Les processeurs continuent à doubler leur puissance tous les deux ans. Le grain de sable vient d'une rupture d'architecture. Dans un souci de maîtrise de la consommation d'énergie et des pertes sous forme de chaleur, la traditionnelle course à la fréquence n'a plus cours. L'heure est aux processeurs multicoeurs combinant dans la même puce plusieurs unités de traitement parallèle. Aujourd'hui, les processeurs destinés aux ordinateurs renferment deux, quatre ou six coeurs.

Le plus grand défi du secteur depuis vingt ans

Cette multiplication des coeurs augmente la puissance virtuelle des systèmes informatiques. Mais qu'en est-il des applications ? Selon Albert Cohen, chercheur à l'Inria (Institut national de recherche en informatique et en automatique), elles tendent à tourner moins vite. Et, paradoxalement, plus il y a de coeurs, plus le ralentissement est important. La raison est facile à comprendre : les logiciels actuels ont été créés pour être exécutés de façon séquentielle et non parallèle. Ils sont donc condamnés à tourner sur un seul coeur. Et comme le coeur n'offre qu'une fraction de la puissance du processeur entier, le ralentissement est inévitable. « L'application a tendance à tirer trop sur le coeur qu'elle utilise, ce qui a pour effet insidieux de créer des surchauffes locales dif-ficiles à gérer. Alors que l'objectif de départ de l'architecture multicoeur est précisément d'éviter ce genre de problème », explique Albert Cohen.

Pour l'industrie du logiciel, le choc est dur. « Elle n'a pas anticipé cette évolution. Elle n'est pas du tout préparée à y faire face », estime Gérard Roucairol, ancien directeur scientifique de Bull, aujourd'hui consultant indépendant. « C'est le plus grand défi que nous ayons eu à relever depuis vingt ans », surenchérit Bernard Ourghanlian, le directeur technique et sécurité de Microsoft France.

La solution consiste à réécrire le logiciel pour qu'il soit exécutable en parallèle. Une tâche loin d'être évidente. L'exemple du calcul intensif, utilisé dans des applications scientifiques (simulation numérique, prévisions météo, mécanique des fluides, calcul de structures, etc.), est à cet égard révélateur. Depuis les années 1970, la communauté scientifique mobilise des moyens énormes sur le sujet sans parvenir encore à résoudre complètement le problème. Les codes de calcul sont pensés dès le départ pour tourner sur des milliers, voire des dizaines de milliers de coeurs en parallèle. Mais cette parallélisation se paye par un grand gaspillage des ressources de traitement. « Dans le meilleur des cas, on arrive à un taux d'utilisation de seulement 10 % de la puissance des microprocesseurs », estime Albert Cohen.

Que dire alors des applications bureautiques ou de gestion, qui se prêtent beaucoup plus difficilement à la parallélisation que les codes de calcul scientifique ? « Prenons l'exemple du logiciel de traitement de texte Word. On voit mal comment il pourrait être parallélisé. Il est probable qu'il conservera un fonctionnement séquentiel sur un seul coeur », pronostique Bernard Ourghanlian.

De fait, la parallélisation du logiciel reste extrêmement difficile à réaliser. « Selon les neurologues, le cerveau humain a du mal à gérer plus de sept choses à la fois. Or le logiciel n'est rien d'autre que le reflet de l'esprit humain », explique Gérard Roucairol. Langages de programmation inadaptés, outils d'aide au développement inexistants, compilateurs inappropriés... La parallélisation automatique des logiciels reste aujourd'hui un rêve lointain. La première brique d'aide au développement, en 2010, est attendue dans la solution Visual Studio 2010 de Microsoft. Mais pour une grande partie du travail, il faudra se résoudre à réécrire le code à la main. Une tâche colossale qui décourage bon nombre d'éditeurs.

Les logiciels récents, créés pour fonctionner de façon modulaire, avec peu de communications entre les différents modules, posent moins d'obstacles. C'est le cas du logiciel ERP de l'éditeur français Cegid. Au prix d'un investissement en R&D de 20 millions d'euros, il a été remanié pour tirer partie des processeurs comprenant jusqu'à huit coeurs. Selon Jean-Louis Decosse, le directeur technique de la société, le gain constaté en rapidité oscille entre 20 et 80 % selon les tâches effectuées. Mais il ne s'agit que de la première marche de la parallélisation et elle ne concerne que la partie serveur, pas la partie client. Le plus dur reste à faire : monter en granularité en parallélisant le code à l'intérieur de chaque module.

Avec l'inflation prévisible du nombre de coeurs, la complexité technique s'amplifie inexorablement. Intel a dévoilé début 2007 un prototype de processeur à 80 coeurs doté d'une puissance phénoménale de 2 Tflops. Il est attendu sur le marché en 2012. « Avec quelques coeurs, on parvient aujourd'hui tant bien que mal à gérer la situation en faisant du multi-application. Mais que se passerait-il demain si le nombre de coeurs grimpait à 16 ou 32 ? Il n'y a pas assez d'applications à faire tourner en simultané sur autant de coeurs », craint Albert Cohen. Bernard Ourghanlian va dans le même sens : « Aujourd'hui, on sait travailler de manière concertée sur quelques coeurs, ne serait-ce que pour faire du multithreading. Mais il faut rester réaliste : au-delà d'un certain nombre de coeurs, il devient extrêmement difficile de mener la parallélisation. Cette limite se situe entre 16 et 32 coeurs. » De son côté, Gérard Roucairol met le doigt sur les risques liés au phénomène de monotonie, bien connu en informatique : « Un logiciel, qui fonctionne parfaitement sur n coeurs, se met à boguer lorsqu'on passe à n +1 coeurs sans que l'on sache a priori pourquoi. »

Microsoft et Intel alliés pour traiter le problème

L'industrie du logiciel a d'autant plus de mal à suivre qu'elle manque cruellement de compétences. Les rares spécialistes dans ce domaine sont accaparés par le monde scientifique, le secteur de prédilection du calcul parallèle. Les moyens à mobiliser sont hors de portée des petits éditeurs. Conscients des enjeux, Microsoft et Intel ont pris le problème à bras- le-corps. En 2008, ils ont créé deux laboratoires : Parallel Computing Laboratory, à l'université de Californie (Berkeley), et Universal Parallel Computing Research Center, à l'université de l'Illinois (Urbana-Champaign). Objectif : définir un modèle de programmation parallèle efficace pour les processeurs multicoeurs. L'investissement se monte à 20 millions de dollars sur cinq ans.

Au final, c'est le modèle économique de l'industrie informatique qui se trouve chamboulé. Jusqu'ici, à chaque nouvelle génération de processeur, le même logiciel tournait plus vite sans que l'éditeur ait quoi que ce soit à faire. Le gain de performance était gratuit tant pour l'éditeur que pour l'utilisateur final. L'adaptation aux processeurs multicoeurs demande un travail considérable. Qui va en payer le coût ? Les éditeurs de logiciels, qui consacrent déjà une grande part de leurs revenus à la R&D ? L'utilisateur final ? Ou les deux ?

Pour Xavier Lazarus, associé chez Elaia Partners, un fonds d'investissement spécialisé dans le logiciel, le scepticisme est de mise : « Le boulot à faire est énorme pour des bénéfices pour le moins aléatoires. Le jeu en vaut-il la chandelle ? Ce n'est pas sûr. »

Aujourd'hui,

les processeurs renferment jusqu'à six coeurs pour les PC et les serveurs informatiques, huit coeurs pour les consoles de jeux vidéo et seize coeurs pour les systèmes embarqués. L'inflation du nombre de coeurs va s'accélérer, comme le démontre le prototype de processeur à 80 coeurs d'Intel (ci-contre). Son lancement est prévu en 2012.

LE LOGICIEL A DU MAL À SUIVRE

Apparent paradoxe - Le passage à des processeurs multicoeurs est censé doper les performances des applications informatiques. Mais dans la réalité, c'est le contraire qui se produit. Les logiciels existants tourneraient moins vite que sur les anciens processeurs monocoeurs. La raison en est simple : ils n'ont pas été pensés pour être exécutés en parallèle. Et ce problème n'est pas près de se résorber. La programmation parallèle reste en effet une affaire coûteuse et techniquement complexe. Pour l'industrie du logiciel, c'est un défi énorme.

DU MULTITHREADING AU... VRAI PARALLÉLISME

Le multithreading > Présentation de plusieurs files d'instructions en parallèle. C'est du parallélisme virtuel. Pour l'utilisateur, il donne l'apparence que les différentes files s'exécutent en parallèle. Ce procédé vise à améliorer l'utilisation des ressources de traitement. Il est mis en oeuvre par le processeur indépendamment de son architecture monocoeur ou multicoeur.Le multitâche > Traitement en alternance de plusieurs applications sur le même processeur. Le temps d'alternance est si court que l'utilisateur voit ses applications tourner en simultané. Cette fonction est gérée par les systèmes d'exploitation courants (Windows, Unix, Linux...). Elle est également indépendante de l'architecture du processeur.Le multi-application > Traitement simultané de plusieurs applications, une par coeur. C'est aujourd'hui la principale utilisation des processeurs multicoeurs. Cette possibilité est offerte par les systèmes d'exploitation courants.Le vrai parallélisme > La même application est exécutée sur plusieurs coeurs en parallèle. Résultat : elle tourne plus vite que dans le cas d'un traitement séquentiel sur un processeur monocoeur. Aujourd'hui, seules les applications scientifiques de calcul intensif utilisent cette possibilité.

Albert Cohen, chercheur à l'Inria (Institut national de recherche en informatique et en automatique)C'EST UNE RÉGRESSION

Du point de vue informatique, les processeurs multicoeurs se révèlent être une double régression. D'abord pour les architectes de processeurs, désormais bridés dans leur créativité. Ensuite pour les utilisateurs, qui voient leurs applications tourner en réalité moins vite. Sans compter les problèmes de déséquilibre de charge et les difficultés à gérer les risques de surchauffe locale. Pour les éditeurs de logiciels, c'est aussi la catastrophe. Ils ne savent pas comment s'y prendre pour passer à la programmation parallèle. Problème de moyens bien sûr, mais surtout absence à ce jour de solutions techniques adaptées. Cela étant dit, il est clair que, du point de vue électronique, l'architecture multicoeur s'impose comme une nécessité. C'est la seule solution trouvée pour stopper la dangereuse montée des courbes de consommation d'énergie et des pertes sous forme de chaleur.

PHILIPPE THIERRY, INGÉNIEUR D'APPLICATION SENIOR CHEZ INTEL FRANCEC'EST UN VRAI PROGRÈS

Les applications courantes, écrites pour un traitement séquentiel, tournent plus vite sur un processeur multicoeur. Ne serait-ce que par la capacité à tirer réellement profit du procédé du multithreading à l'oeuvre depuis longtemps dans des systèmes d'exploitation comme Windows, Unix ou Linux. L'expérience montre que même les logiciels de gestion, de comptabilité ou de facturation gagnent en rapidité. Bien sûr, pour aller plus loin dans les performances et exploiter pleinement le parallélisme, il faudra remettra à plat le logiciel et réécrire le code. C'est souvent l'occasion de se poser la question de la qualité du code et de procéder à des rafraîchissements majeurs de l'application. Chez Intel, nous avons des spécialistes dont la mission est d'aider les éditeurs à le faire.

vous lisez un article d'Industries & Technologies N°0909

Découvrir les articles de ce numéro Consultez les archives 2009 d'Industries & Technologies

Bienvenue !

Vous êtes désormais inscrits. Vous recevrez prochainement notre newsletter hebdomadaire Industrie & Technologies

Nous vous recommandons

Atos lance un supercalculateur de poche pour mettre le cloud dans l’usine

Atos lance un supercalculateur de poche pour mettre le cloud dans l’usine

Le BullSequana Edge lancé par Atos le 16 mai à Paris est un serveur dédié à l’edge computing. Il est[…]

Des pixels un million de fois plus petits que ceux des smartphones

Des pixels un million de fois plus petits que ceux des smartphones

Un test pour arbitrer le match entre puces quantiques et supercalculateurs

Un test pour arbitrer le match entre puces quantiques et supercalculateurs

Iter, New Space, Intelligence artificielle... les meilleures innovations de la semaine

Iter, New Space, Intelligence artificielle... les meilleures innovations de la semaine

Plus d'articles