Les premiers ordinateurs étaient essentiellement constitués d’une mémoire chargée de stocker les programmes informatiques ainsi que les données nécessaires à ces derniers, une unité arithmétique et logique chargée d’effectuer ces types d’opérations, et les unités d’échanges vers les périphériques (disques, imprimantes, etc.). En raison de la présence d’une seule unité arithmétique et logique, sur ce type d’architecture, un code de calcul est exécuté en mode séquentiel sur cette seule ressource ; cela correspond à l’exécution des instructions l’une après l’autre, donc une seule à la fois, même si les opérations à effectuer sont indépendantes. Ce type d’exécution séquentielle a très rapidement atteint des limites de performances lorsque le calcul ne permet pas d’obtenir des résultats dans des délais raisonnables et nécessite un stockage mémoire important. Ainsi, pour des calculs rendus nécessaires pour traiter de grosses applications, comme par exemple en météorologie, ce type de programmation séquentielle n’est plus adapté et les performances de calcul ne sont pas satisfaisantes pour obtenir des résultats de simulation dans des temps relativement brefs.
Pour remédier à ces limitations le calcul parallèle est apparu comme une solution. Afin d’améliorer les performances des ordinateurs, cette solution consiste à exploiter au mieux les ressources de calcul et de mémorisation. La solution retenue revient à paralléliser les codes, c’est-à-dire à effectuer plusieurs calculs simultanément sur différentes ressources constituées pour chacune d’elle par une unité arithmétique et logique, appelée aussi processeur ; ainsi un plus grand nombre d’opérations sont effectuées en un temps minimal. Pour paralléliser un code de calcul, l’utilisateur est amené à décomposer le problème global à traiter en plusieurs sous-problèmes couplés chacun de taille plus petite. Ainsi plusieurs tâches de calcul pourront être traitées simultanément sur ces processeurs, le couplage entre les sous-problèmes étant effectué par des échanges de résultats entre les processus coopérants en parallèle. Par ce biais, à condition de bien optimiser les codes de calcul parallélisés, les temps d’exécution pourront nettement diminuer ce qui permettra de résoudre des problèmes de plus grande taille et de traiter des volumes de données plus importants.
Ce nouveau mode de calcul nécessite d’une part de remettre en cause l’architecture des premiers ordinateurs, d’autre part d’adapter le programme de calcul à un mode d’exécution parallèle et enfin d’apprendre de nouveaux langages et outils de programmation.
Les architectures de ces superordinateurs ont donc évoluées d’abord par la construction de machines à mémoire commune où tous les processeurs ont accès à cette dernière. Cependant ce type...