Utilisateur:Poil/Super
Les ordinateurs de la classe des « super ordinateurs » sont conçu pour maximiser la puissance de calcul au détriment du coût.
Historique
[modifier | modifier le code]La course à la performance des ordinateurs à commencé avec l’ère commercial de l’informatique, au début des années 50 (Univac, première solution commerciale), suivi peu après par les premiers IBM. En 1958 IBM conçoit le modèle « Stretch » (de l’anglais étiré), qui utilise les dernières avancées dans le domaine de l’architecture des ordinateurs et une technologie de pointe.
En 1964, IBM est détrôné par CDC (Control Data Corporation) et son modèle 6600, trois fois plus rapide que le Stretch. C'est à cette occasion que né le terme superordinateur. Cette machine a été conçu par Seymour Cray, qui quittera CDC en 1972 pour fonder sa propre société Cray Research, dont le Cray 1 sera le premier modèle, commercialisé en 1976.
Entre temps, une ordinateur de conception massivement parallèle, l’Illiac IV, dont l’étude à commencée en 1964, ne sera terminé qu’en 1972 et sera utilisé jusqu'en 1982. Son successeur sera la CM1 contruite par Thinking Machines, composée de 65 536 processeurs de 1 bit.
La dynastie des Crays, machines (historiquement) vectorielles, s’est perpétuée à travers de nombreux modèles : Y-MP, C90, T90, etc. Les Japonais n’ont jamais été en reste, grâce aux sociétés : Fujitsu, Hitachi et NEC.
L’attention du grand public sur ces machines sera attiré par la défaite de Gary Kasparov contre l’IBM Deep Blue, au jeu d’échecs, fin 1997.
Architecture
[modifier | modifier le code]Aujourd’hui on peut distinguer trois types de super ordinateurs :
- les architectures vectorielles.
- les architectures parallèles, composées de centaines voire milliers d’élément de calcul.
- Les architectures multiflots (multithread) où le processeur change de contexte à chaque cycle d’horloge.
Les architecture vectorielles possèdent des instructions capable d’effectuer une opération entre deux vecteurs, soit entre un vecteur et un scalaire. Grâce à une architecture matériel adéquate, qui en particulier fera en sorte qu’aucune faute ne viendra interrompre l’instruction, ces machines sont capables de soutenir une cadence de calcul très importante. Le nombre d’unités de calcul de ces machines dépasse rarement 8, l’organisation de la mémoire centrale joue un rôle important, ainsi que la profondeur des pipelines.
Les architectures parallèles sont composés d’un nombre très important (de quelques centaines à quelque dizaines de millier) de processeurs, que ceux ci soient spécialement conçu ou pas. Certaines de ces machines sont simplement composés de micro-ordinateurs couplées entre eux par des réseaux de type Ethernet.
Les architectures multiflots sont composées de processeurs capable de changer de contexte à chaque cycle, les contextes sont donc cablés à l'intérieur du processeur. Il faut évidemment que la machine ait suffisamment de processus (et flots) à exécuter en même temps pour que l’utilisation des processeurs soit optimum.
Enfin, on notera que toutes les architectures multi-processeurs s’appuient sur un réseau de communication permettant aux processeurs de communiquer entre eux. Ces réseaux ont des topologies très diverses, tels que : bus, tore, hypercube etc.
Utilisation
[modifier | modifier le code]OK
On remarquera que de très nombreuses disciplines scientifiques ont besoin d’utiliser des super calculateurs : le problème à toujours été leur coût.
Programmation
[modifier | modifier le code]On ne programmera pas sur un super ordinateur comme sur une machine scalaire. Les problèmes qui surviennent typiquement sont ceux liés à la précision de l’arithmétique sur les processeurs flottant ainsi que le nombre très élevé d’itérations effectuées. Sur le CDC 6600 par exemple, le fragment de code suivant pouvait générer une erreur sur division par :
if (x == 0) y = 100 else y = z / x
car il existaient des valeurs pour lesquels était si petit qu’il était représenté par dans le diviseur et pas dans le comparateur. les programmeurs remplaçaient donc ce code par :
if (1.0 * x == 0) y = 100 else z / x
mais celui ci ne tournait pas sur Cray car est calculé de cette façon : et pouvait provoquer un dépassement de capacité !
Vitesse de calcul
[modifier | modifier le code]L’unité utilisé est le FLOP. Voici la puissance comparé de quelques machines :
Constructeur | Modèle | Année | Nombre de processeurs | Puissance |
---|---|---|---|---|
IBM | Strech | 1961 | 1 | 600 Kflop |
CDC | CDC 6600 | 1965 | 1 | 3 Mflop |
Cray Research | Cray 1 | 1976 | 1 | 160 Mflops |
Cray Research | Cray 2 | 1985 | 1 | xxx |
Cray Research | Cray Y-MP | 1 | xxx | |
Fujitsu | VPP 500 | |||
Thinking Machines | CM 1 | |||
Cray Research | T3D |
Principaux obstacles techniques
[modifier | modifier le code](supprimer la partie taille).