Parallélisme

[geek_mode=on]

Un microprocesseur, grosso modo, c’est une grosse calculatrice programmable avec de la mémoire. Elle fait des additions ou des multiplications les unes après les autres, de manière séquentielle.

L’amélioration des technologies et des procédés de fabrication permet d’augmenter la taille de la mémoire et de réduire la taille des transistors (les briques de base du microprocesseur) et donc la vitesse de traitement. Cette progression était jusqu’à présent exponentielle, comme la remarqué Gordon Moore avec sa fameuse « loi » : le nombre de transistors a doublé tous les deux ans ces trente-cinq dernières années.

Mais l’industrie est aujourd’hui confrontée à trois défis : (1) la dissipation thermique est très problématique et (2) les limites physiques dues à l’apparition de phénomènes quantiques se rapprochent et (3) tout ça coûte de plus en plus cher à fabriquer.

Pour limiter ces problèmes et continuer à proposer des produits de plus en plus performants, les fabricants ont trouvé la parade : on met plusieurs microprocesseurs en même temps. La plupart des machines vendues aujourd’hui en contiennent deux. Demain, ce sera huit ou trente-deux. Tout cela semble simple, non ? Pour calculer plus vite, il suffit d’ajouter des calculateurs.

En fait, tout devient plus compliqué. Les instructions ne sont plus exécutées les unes après les autres, dans un ordre strict, mais toutes en même temps. La seule contrainte est d’ordre logique : avant de calculer une opération, il faut d’abord calculer ses opérandes. Pour le reste, tout peut arriver dans n’importe quel ordre. Et aussi en parallèle, puisque plusieurs calculateurs travaillent dans la machine.

Or, il ne vous aura pas échappé qu’un programme informatique est une suite d’instructions, c’est-à-dire une séquence. Sur le papier ou sur l’écran, toutes les instructions sont donc dans un ordre strict. Cela pose des défis nouveaux aux programmeurs et aux chercheurs :

  • Comment passer d’une séquence d’instructions à diverses exécutions parallèles ?
  • Peut-on faire ce travail automatiquement ? À quel moment ?
  • Quels langages et quelles technologies utiliser ?

Avec ces nouvelles architectures dites multi-cœur, on a donc un problème de parallélisme et plus précisément un problème de distribution. Si un calcul est fait dans un des calculateurs mais que son résultat est nécessaire à un autre calculateur, il faut un mécanisme de communication entre les deux. Et la communication prend du temps. Et plus il y a de calculateurs, plus la communication va constituer une part importante de leur travail. Pour n processeurs, il faut au plus n×(n-1) canaux de communication, ce qui fait aussi une progression exponentielle.

Mais alors, me direz-vous, comment peut-on bénéficier de cette puissance de calcul parallèle ? D’abord, dans un ordinateur personnel, l’immense majorité du temps, le micro-processeur ne fait rien. On pourrait donc lui attribuer des tâches « de fond » comme indexer les fichiers ou plier des molécules. Ensuite, il existe de nombreux langages de programmation, qui ne sont pas nouveaux mais encore considérés comme marginaux, qui permettent de programmer de manière plus parallèle : les langages fonctionnels ou logiques, ou bien les langages synchrones par exemple.

Tout cela va nécessiter un changement radical dans la manière de programmer et beaucoup dans l’industrie informatique devront tout réapprendre.

Ce qui est, somme toute, assez réjouissant. :-p

5 Replies to “Parallélisme”

  1. Des études se poursuivent actuellement pour créer des « switchs » moléculaires (position 0 ou 1 en fonction de la position d’un groupement, d’une couleur dûe à un étage d’oxydation, d’une transition conformationnelle) afin de minimiser à l’extrème.
    Hey! Tu sais que j’ai lancé un calcul avec 256 processeurs en parrallèle sur le 39ème cluster le plus rapide du monde? 😀
    http://www.hpc2n.umu.se/resources/Akka/

    J’aime

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.