Les collections d’Aconit

Brève histoire des machines parallèles

Les machines parallèles sont nées d’une idée simple : accélérer l’exécution d’une application informatique en la découpant en plusieurs tâches pouvant s’exécuter simultanément. Une machine parallèle comporte plusieurs processeurs sur lesquels peuvent s’exécuter ces tâches élémentaires.

La mise en œuvre de cette idée s’est révélée beaucoup plus difficile que prévu, pour diverses raisons.

  • Toutes les applications ne se prêtent pas à un tel découpage ; certaines séquences ne peuvent être parallélisées, ce qui provoque une forte réduction du gain obtenu.
  • Même si la décomposition est possible, la coordination entre les différentes tâches peut devenir compliquée.
  • La conception même d’une machine parallèle est complexe : si les processeurs ont une mémoire commune, il faut régler les conflits d’accès à cette mémoire ; si les mémoires des processeurs sont séparées, il faut les coordonner entre elles.
  • Les langages de programmation usuels prennent mal en compte le parallélisme.

Les premiers travaux sur le parallélisme datent du début des années 1960, et les concepts développés à cette époque (notamment par Edsger Dijkstra et C. A. R. Hoare) permirent d’expliquer des pannes mal comprises des systèmes d’exploitation et de construire des outils permettant une synchronisation rigoureuse des activités parallèles.

Seymour Cray

Seymour Cray
1925-1996

 

 

Les premières machines parallèles ont été construites dès le milieu des années 1960. Le CDC 6600, premier des « supercalculateurs », conçu par Seymour Cray en 1964, exécutait en parallèle le traitement et les entrées-sorties. Cray fonda plus tard sa propre entreprise, Cray Research, spécialisée dans les machines parallèles de grande puissance. Les grands constructeurs (IBM, CDC), avaient aussi leur ligne de machines parallèles. Ces supercalculateurs, machines puissantes et coûteuses, sont toujours utilisés pour des applications scientifiques nécessitant une grande puissance (météorologie, physique et chimie nucléaires, astrophysique, etc.).

 

En dehors des supercalculateurs, construits en faible nombre, de nombreuses machines parallèles visant un marché plus large ont été développées.

  • Au début des années 1980, la société britannique Inmos construisit le transputer, dont le logiciel utilisait un langage parallèle à base d’échanges de messages, Occam (fondé sur un modèle créé par Hoare). Des machines parallèles étaient construites comme assemblages de transputers. Des exemples en sont le Meganode, issu d’un projet de recherche européen et le Volvox de la société Archipel.
  • À la fin des années 1980, divers constructeurs spécialisés (Thinking Machines, Kendall Square, Convex, Sequent, etc.) ou généralistes (IBM, DEC, etc.) développèrent des machines parallèles à base d’architectures spécifiques (à mémoire commune ou à mémoires distribuées), utilisant divers schémas d'interconnexion (tels que l'hypercube). Un exemple en est le DEC MPP 12000. Néanmoins, ces machines, qui pouvaient comporter des milliers de processeurs, étaient coûteuses car conçues « sur mesure », et difficiles à programmer. Elles disparurent vers le milieu et la fin des années 1990.
  • L’arrivée des ordinateurs à faible coût à base de microprocesseurs et le développement des réseaux ouvrirent la voie à de nouveaux modèles de machines parallèles. D’abord construites sur des réseaux locaux (grappes), avec quelques dizaines ou centaines de processeurs, ces machines utilisèrent ensuite l’Internet (grilles) avec des milliers, puis des dizaines de milliers de processeurs. Les concentrations actuelles de serveurs, utilisées notamment pour la fourniture de services banalisés de traitement et de stockage (nuages) comportent des centaines de milliers de machines de type PC.

Malgré ces avancées techniques, la programmation des machines parallèles reste difficile. Les problèmes posés sont la synchronisation des activités parallèles et le placement des tâches sur les différents processeurs. Pour réduire les problèmes de synchronisation, on essaie de décomposer les applications en tâches qui communiquent peu entre elles. Si certaines applications, notamment la recherche d’information, se prêtent bien à un tel découpage, ce n’est pas le cas de toutes. La miniaturisation des circuits intégrés ouvre un nouveau domaine au calcul parallèle. En effet, on ne peut plus augmenter la rapidité de ces circuits en raison des problèmes d’évacuation de la chaleur posés par leur densité croissante. L’augmentation de puissance passe, ici encore, par la parallélisation (processeurs multicœurs).