01net    Web


Les Témoignages de CIO
« Quand il faut changer, pourquoi ne pas en profiter pour devenir meilleur que les autres ? » Ralph Szygenda, Vice président Groupe et DSI de General Motors
« La sécurité ne peut plus se limiter à une défense réactive. » Thomas Noonan, Cofondateur d'IBM Internet Security Services
Liens utiles
L'alignement de l'IT avec la stratégie de l'entreprise. Visitez le site dédié aux DSI.
Les nouveaux défis du DSI
Innover, la seule façon de créer un avantage compétitif durable
Téléchargez les livres blancs IBM
Exploiter pleinement les apports de la virtualisation
La gestion du capital information de l'entreprise
Les communications unifiées au coeur de la stratégie de l'entreprise
L'architecture orientée services : guide pratique pour mesurer le retour sur cet investissement (en anglais)
Contactez-nous
Envoyez un e-mail




actualités

dossiers

indicateurs

logithèque pro

emploi et formation








Découvrez 01men, le net masculin : sports, automobile, high-tech, loisirs, style de vie...


logos & sonneries


jeux
NEWSLETTERS
Abonnez-vous gratuitement !
 

focus produit
LG invente l'iPhone de la photo
trucs et astuces
Tout faire avec Windows Media Center
internet pratique
Navigateurs et vie privée : les cookies mis à nu

A ne pas manquer !
Games Convention, du 20/08/2008 au 24/08/2008

IFA, du 29/08/2008 au 03/09/2008

> tous les salons et séminaires 

Parallélisme : des efforts en perspective Renaud Bonnet et Pierre Hardoin

écrire à l'auteur imprimer
envoyer par mail
Cet article est extrait de : Décision Informatique

Seul hebdomadaire généraliste qui aide concrètement au choix et à la mise en œuvre opérationnelle, grâce à une information pragmatique et concrète.

Découvrez le magazine
Contactez la rédaction
Abonnez vous
[ ARCHITECTURE ]
Parallélisme : des efforts en perspective
Les fabricants ont renoncé à la course à la fréquence, au profit du multicoeur et du « multithreading ». Une évolution qui assure des gains de performance, mais qui obligera les développeurs à penser leur code autrement.

Renaud Bonnet et Pierre Hardoin , Décision Informatique (n° 724), le 20/07/2007 à 07h00

« Jusqu'à présent, la vitesse des processeurs évoluant régulièrement, on ne se posait guère de questions sur le gain de performance des applications, qui allait de soi à chaque changement de matériel. Mais nous arrivons aux limites des possibilités des semi-conducteurs à continuer dans cette voie », résume Jacques Truchet, consultant Solaris chez Sun.

En effet, la hausse de fréquence des processeurs se heurte aux lois de la physique, et son coût devient insupportable en énergie et en dissipation thermique. La nouvelle voie de développement consiste à multiplier les unités de traitement au sein des processeurs par des technologies telles que le multicoeur et le Simultaneous MultiThreading (SMT), cette dernière consistant à faire exécuter à un même processeur plusieurs files d'instructions (threads) en même temps. Résultat : on voit sur le marché des processeurs à deux, quatre, voire huit coeurs, capables d'exécuter jusqu'à trente-deux threads dans le cas de l'UltraSPARC T1 de Sun.

L'augmentation mathématique des performances est-elle donc acquise pour les prochaines années par ce gain de parallélisme ? Pas aussi simple, alors que tous les logiciels bénéficiaient du gain de fréquence, tous ne sont pas capables de bénéficier de ce parallélisme.

Lors d'une conférence l'an dernier à Paris, Herb Sutter, architecte logiciel chez Microsoft et spécialiste du langage C++, expliquait que l'époque où chaque nouvelle génération de processeurs améliorerait les performances des applications était révolue, et appelait à une réforme des outils de développement multithread.

« Aujourd'hui, la façon de développer est telle que peu de gens tirent pleinement parti de ces nouvelles architectures matérielles », considère Sami Jaber (lire encadré) contre l'avis de Stanislas Odinot, responsable marketing chez Intel France : « La programmation de logiciels multithreads est courante, et ce depuis des années. » Mais Stephen Herrod, vice-président de VMware, rappelle « qu'il est très dur d'écrire un programme parallèle pour plus de quatre processeurs. Mais, comme la technologie multicoeur décolle, il faut trouver un moyen de s'en servir. »

Pile d'optimisations

En fait, comme le résume Jacques Truchet, « il existe une pile de niveaux d'optimisation à prendre en compte, et le choix d'intervenir à l'un ou l'autre de ces niveaux dépend des besoins et des ressources. Les entreprises n'en sont pas encore à réécrire leurs applications, mais l'optimisation pour ces nouvelles architectures les préoccupe. » L'équation est complexe, elle fait entrer en jeu les compilateurs, les systèmes d'exploitation, les environnements d'exécution (tels Java et .NET), les middlewares , mais aussi la façon dont les logiciels sont développés. Le compilateur tire du code du parallélisme dit « explicite », basé sur les structures du langage de développement.

Sun et Intel ont d'ailleurs mis à jour dernièrement leurs outils de compilation en promettant justement des améliorations dans ce sens. Ensuite, les systèmes d'exploitation modernes ont tous une capacité à générer du parallélisme. « Solaris est conçu pour gérer un nombre important de processus. Comme une application est généralement composée de plusieurs processus, on bénéficiera du parallélisme à travers l'OS », rappelle Jacques Truchet.

Les environnements d'exécution ont aussi leur rôle à jouer. « Une JVM fait beaucoup de choses pour le développeur, elle gère la mémoire, mais aussi les threads. Un grand nombre de développeurs Java ne voit jamais un thread, car le serveur d'applications s'en charge », explique Alexis Moussine-Pouchkine, architecte Java chez Sun.

On peut aussi obtenir des optimisations en configurant la JVM de façon précise pour une application donnée. La virtualisation fournit aussi une partie de la solution, quoi qu'il soit plus juste de parler ici d'optimisation des ressources. « Il est compliqué de développer des applications parallèles pour une machine à, disons, seize coeurs. Les techniques de virtualisation peuvent être une solution, en attachant x coeurs à une machine virtuelle. Il est vrai qu'à l'intérieur de chaque machine virtuelle, le fonctionnement reste séquentiel », explique Sylvain Siou, directeur technique de VMware pour la France.

Agir dès le développement

Même s'il ne nie pas l'importance de toutes ces optimisations, Sami Jaber n'en démord pas : « Si on veut aller plus loin dans l'utilisation efficace du parallélisme apporté par les architectures sous-jacentes, ce sera au développeur de placer les bons mots-clés dans son code au moment où il l'écrit, car c'est lui qui a la meilleure vision de la façon dont l'application est structurée. Faire de l'analyse de code par la suite est possible, mais cela reste très coûteux. » « Concevoir une application multithread ne peut se faire qu'en amont , confirme Jacques Truchet. Les spécialistes du système seront toujours là pour assurer une partie de l'optimisation, mais c'est plutôt la conception même des applications qu'il faudra revoir. » Chez Intel, on confirme apporter de l'assistance à des éditeurs ou à des entreprises, sous forme de conseils ou parfois de retouche du code. « Pour les éditeurs qui n'ont pas anticipé, cela demande un travail intellectuel de comprendre comment exploiter le multithreading, pour imaginer comment découper leur logiciel. Une fois ce découpage imaginé, il faut ensuite le programmer, et cela coûte souvent cher », affirme Stanislas Odinot.

Cliquez ici pour agrandir l'image
Si vous êtes pressé

En substitut de la course à la fréquence, les constructeurs de processeurs multiplient les coeurs au sein des processeurs, ainsi que les threads. Le gain en performances est au rendez-vous, mais peu d'applications en tirent pleinement parti.

Diverses solutions techniques existent pour optimiser la gestion des files d'instructions, mais cette parallélisation ne peut faire l'économie d'une façon différente de concevoir les applications en pensant autrement l'écriture du code. Cette prise en compte du parallélisme dans l'écriture accroît de 40 % les performances.


Outils et langages

La recherche d'une meilleure utilisation du parallélisme dans la programmation va bon train. Certains composants sont déjà très avancés, telle la JSR133, un modèle révisé de gestion des threads et de la mémoire pour Java, ou l'interface de programmation d'applications OpenMP pour C, C++ et Fortran, qui fournit une famille d'outils pour la création d'applications parallèles.

Il existe aussi, avec Fortress chez Sun ou Concur chez Microsoft, de nombreuses recherches sur la façon d'introduire plus directement le parallélisme dans des langages de développement.



Suite de l'article
Sami Jaber (Valtech) : « peu de développeurs pensent au parallélisme »
Stéphane Nègre (EMEA) : « évolution pour le processeur, révolution pour le logiciel »



Nous contacter | Charte de confiance | Voir notice légale


Tous droits réservés © 1999 - 2008 Internext - 01net.