...

Météorologie, climatologie : à la recherche du calculateur idéal… Dossier

by user

on
Category: Documents
1

views

Report

Comments

Transcript

Météorologie, climatologie : à la recherche du calculateur idéal… Dossier
Dossier
La Météorologie - n° 55 - novembre 2006
18
Météorologie, climatologie :
à la recherche
du calculateur idéal…
Dominique Birman(1) et Denis Paradis(2)
(1) Météo-France - Direction des systèmes d’information (DSI)
42, avenue Gaspard-Coriolis - 31057 Toulouse Cedex
[email protected]
(2) Météo-France - Direction de la prévision
Résumé
La prévision numérique du temps et
la simulation climatique ont toujours
compté parmi les applications des
calculateurs les plus puissants. Elles
ont été à la pointe de l’utilisation des
calculateurs vectoriels dès leur apparition. Aujourd’hui, l’efficacité des
codes de météorologie et de simulation climatique sur les architectures
massivement parallèles est établie, et
de nouvelles technologies sont en
cours d’exploration. Cependant, on
ne voit pas se dessiner clairement une
architecture privilégiée pour ces
applications tant le marché semble
encore susceptible d’évoluer, y compris de manière radicale, et parce que
les développeurs des modèles numériques ont démontré leur aptitude à
exploiter au mieux les technologies
qui sont mises à leur disposition.
Abstract
Meteorology, climatology, looking
for the ideal computer...
Numerical weather prediction
(NWP) and climatological simulation
have always been applications of the
most powerful computers. They have
been in the forefront of the use of vector machines since the first days.
Nowadays, the efficiency of NWP
and climatological simulation codes is
clearly established, and new technologies are being tested. However, there
is no clear indication what the best
architecture for these applications
could be, because of the possible evolution of the market, and because
model developers have shown their
ability to make the best possible use of
any technology.
es technologies du calcul scientifique ont suivi une évolution constante et rapide. La prévision
numérique du temps et la simulation
climatique ont montré qu’elles savaient
en tirer parti. Peut-on considérer qu’aujourd’hui ces changements indiquent
une direction claire et identifier les calculateurs et les techniques qui seraient
les mieux adaptés à nos applications ?
Telle est la question à laquelle nous
avons cherché à répondre.
L
Bref historique
Paléontologie et antiquité :
Eniac
Neumann en 1950 (Coiffier, 2000) ont
durablement installé la prévision météorologique numérique au tout premier
rang des utilisateurs de ces machines
nouvelles.
Les calculateurs séquentiels
des origines
IBM, Bull, CDC, l’ère
des ordinateurs généralistes
Si l’Eniac marquait le temps des pionniers et des expérimentateurs qui établirent que la prévision numérique n’était
pas qu’un rêve, le temps des industriels
est ensuite arrivé très vite. IBM et
Control Data Corporation sont connus
La prévision numérique du temps fut
l’une des premières applications mises en
œuvre sur un calculateur dès le milieu du
XXe siècle, et ce n’est nullement l’effet du
hasard, ainsi que l’expliquait Jean
Coiffier en juin 2000 dans les colonnes
de cette revue. L’intuition de Richardson
et l’expérience menée sur l’Eniac
(Electronic Numerical Integrator And
Computer) par Charney, Fjörtoft et von
Console IBM 360-40 :
gros plan sur la console
système de l’IBM 360.
(©IBM-France)
Une salle de calcul typique
des années 1970 équipée
d’un IBM 360.
(©IBM-France)
La Météorologie - n° 55 - novembre 2006
dans le monde des services météorologiques. Bull ne l’a pas été, mais aurait pu
l’être, et on a aujourd’hui oublié que cette
société menaça un temps (au début des
années 1960) la suprématie d’IBM.
D’autres, tels Burroughs ou Univac, ne
sont pas parvenus à s’imposer durablement.
Ces calculateurs, qui intégreront des
avancées technologiques considérables,
telles que le passage des relais et des
tubes aux transistors, domineront l’ensemble du marché du calcul, que ce soit
dans le domaine scientifique, comme en
météorologie ou dans la recherche, tant
civile que militaire, ou encore dans le
domaine de la gestion (banque et assurance). Cette unicité de la gamme des calculateurs que l’on retrouvait dans tous les
domaines d’utilisation prenait sa source
dans des avancées très concrètes telles
que la microprogrammation(1) qui permet d’unifier les jeux d’instructions, les
systèmes d’entrées-sorties quasi indépendants du système central, ou encore les
instructions spéciales permettant l’optimisation du système d’exploitation.
L’exemple le plus abouti à cette époque
fut le système IBM 360, apparu en 1964,
qui fut beaucoup copié et dont de nombreuses traces subsistent encore dans la
technologie des systèmes d’exploitation.
Ces ordinateurs universels qui ont constitué une réelle avancée industrielle sont
aujourd’hui qualif iés de systèmes
séquentiels, par opposition aux calculateurs vectoriels apparus ensuite et qui
sont évoqués dans les paragraphes qui
suivent.
Aspects économiques
et modèle d’accroissement
des performances
Ces systèmes, même s’ils se sont largement répandus dès la fin des années
1960, restaient toutefois très coûteux,
tant en investissement qu’en fonctionnement : consommation électrique
imposante et systèmes de climatisation
très élaborés faisant appel à plusieurs
niveaux de circuits de refroidissement,
encombrement au sol considérable, particulièrement au niveau des périphériques. Ils étaient, au moins de ce fait,
mais également de par leur complexité
d’utilisation, réservés à certains usages
(la gestion pour de très grosses entreprises, le calcul scientifique de pointe et
les applications militaires), là où les
investissements humains et financiers
nécessaires étaient jugés réalisables.
(1) Pour la définition de certains termes techniques, se reporter au glossaire, page 28.
19
L’augmentation de la performance globale d’un tel système passait par l’augmentation de la performance de chacun
de ses composants : l’électronique des
processeurs, la technologie des mémoires, des périphériques…
Après le passage des tubes aux transistors, rien ne change de ce point de vue :
le même modèle d’accroissement
continue à s’appliquer. C’est à cette
époque qu’est formulée la loi expérimentale, toujours vérifiée depuis, à
laquelle Gordon Moore (inventeur du
premier microprocesseur et fondateur
de la société Intel) a attaché son nom et
qui stipule que le nombre de transistors
par unité de surface double tous les dixhuit mois, à coût constant.
cule l’évolution de tout un système, pas
celle d’un point isolé). L’idée consiste
alors à effectuer cette opération sur toutes les données concernées quasi simultanément, ou au moins sur un volume
significatif de données, ce qui aura pour
effet d’accélérer considérablement l’ensemble des calculs. Cette idée sera, par
la suite et jusqu’à nos jours, reprise sur
tous les calculateurs dits vectoriels.
Dans certains domaines de la simulation numérique du temps, un même calcul est à effectuer sur toute une verticale
pour une variable. Cette verticale constituera un vecteur lors de son traitement
par un calculateur vectoriel. Par
ailleurs, le Cray 1 mettait en œuvre une
architecture de traitement en pipe-line,
Le Cray 1, premier supercalculateur vectoriel utilisé en opérationnel par Météo-France dans le cadre du C2VR.
(Photo Météo-France, Jean-Marc Destruel)
Les calculateurs
vectoriels
Au début des années 1970, Seymour
Cray, l’un des fondateurs de l’entreprise, quitte Control Data Corporation
pour fonder sa propre compagnie, Cray
Research Inc., afin de réaliser son projet de construction d’un calculateur
révolutionnaire auquel il donne son
nom et qui voit le jour en 1976.
Le Cray 1
et son caractère innovateur
La révolution apportée par l’architecture du Cray 1 repose sur l’observation
faite que, dans nombre d’applications,
une même opération est effectuée indépendamment sur tout un ensemble de
données (dans une simulation, on cal-
déjà proposée par les machines de
Control Data Corporation, qui décompose une instruction en plusieurs
instructions élémentaires et organise le
travail à la chaîne sur ces instructions
élémentaires.
Des calculateurs
spécialisés, différenciés
Le calcul vectoriel a connu un succès
rapide avec l’arrivée du Cray 1, et on a
vu tous les centres de prévision numérique du temps s’équiper de ce type de
matériel (la Direction de la météorologie
nationale, par exemple, en participant à
la création du C2VR en 1983). Cependant, ces machines étaient conçues pour
résoudre des problèmes scientifiques et
elles ont envahi un marché de niche. La
séparation s’est rapidement faite entre
calculateurs vectoriels pour la recherche
La Météorologie - n° 55 - novembre 2006
20
et les applications de pointe – y compris
militaires, nous sommes encore à l’époque en pleine guerre froide et la chute
du mur en 1989 est encore loin –, d’une
part, et les calculateurs séquentiels qui
poursuivaient leur évolution technologique et visaient le marché de la gestion et du transactionnel, d’autre part.
teurs, une façon d’accéder à davantage
encore de puissance de calcul en rompant, au moins d’une certaine manière,
avec une logique toujours plus coûteuse,
et on ne s’y est pas trompé.
Modèle d’accroissement
des performances :
des machines coûteuses
Calculateurs vectoriels
et calculateurs parallèles
Ces calculateurs vectoriels restent très
coûteux, tant en investissement qu’en
exploitation. Ce sont des machines de
pointe, très proches des prototypes, fabriquées en petites séries. Ils font appel à
des composants d’une technologie très
élaborée, elle-même très coûteuse. Enfin,
leur fonctionnement est,
lui aussi, extrêmement
onéreux : consommation électrique élevée et
systèmes de refroidissement sophistiqués
qui vont de pair.
Le modèle d’accroissement des performances
est inchangé : l’augmentation de la performance du système
passe par l’augmentation de la performance
de chacun de ses composants. Donc, ce
modèle coûte cher,
d’autant plus que les
composants sont de
plus en plus élaborés
et d’une technologie
poussée nécessitant
une importante activité
de recherche et développement.
Les différents types
de parallélisme
Il n’est pas impossible de présenter l’architecture vectorielle comme une forme
de parallélisme. On l’a vu, les données
contenues dans un même vecteur sont
traitées avec un haut degré de parallélisme puisqu’elles subissent, presque
simultanément, un même traitement.
On peut alors parler de parallélisme des
données. Cependant, l’usage réservera
Les calculateurs parallèles sont donc
ceux qui font coopérer plusieurs unités
de traitement ou processeurs à la résolution d’un même problème. Travailler à
plusieurs, c’est connu, est un bon
moyen de faire ce que l’on ne peut pas
faire seul, ou de le faire plus vite, ce
qui, dans le domaine du calcul, revient
au même. Encore faut-il ne pas se gêner
mutuellement… Et pour ne prendre
qu’un des problèmes qui se posent
parmi les plus simples à formuler, on
imagine aisément que si tous les processeurs d’un calculateur tentent simultanément de modifier la valeur d’une
même variable, soit ils y parviendront et
le résultat sera aléatoire, soit le parallélisme disparaîtra totalement, les processeurs étant servis les uns après les
autres. Cette question de faire coopérer
plusieurs processeurs, ou plusieurs calculateurs, se ramène à un problème de
partage des données. Les réponses
apportées sont diverses et ont évolué
dans le temps.
Le parallélisme d’exécution
• Mémoire partagée
Dès les débuts de l’ère industrielle de
l’informatique, deux processeurs pilotés par le même système d’exploitation
savaient se partager une même mémoire
(figure 1). Le système a ensuite été
étendu et les Cray Y-MP et Cray 2 (tel
celui de Météo-France entre 1987 et
Le Cray 2, qui fut partagé dans le cadre du C2VR de 1987 à 1991, avant de
devenir le premier calculateur opérationnel de Météo-France à Toulouse, jusqu’en 1992. (Photo Météo-France, Jean-Marc Destruel)
Mémoire partagée
et mémoire répartie :
les machines
parallèles
Aujourd’hui, même si l’architecture
vectorielle est toujours mise en œuvre
par plusieurs constructeurs, on en parle
moins que du parallélisme. Le parallélisme n’est pas en soi une idée neuve,
on savait faire fonctionner correctement
des biprocesseurs dès les années 1960.
Mais on a vu, dans cette idée de faire
travailler ensemble plusieurs calcula-
l’application du mot parallélisme aux
architectures mettant en œuvre plusieurs processeurs plutôt qu’à celles
mettant en jeu un processeur unique
traitant des données multiples.
On peut imaginer mettre en parallèle
plusieurs processeurs vectoriels. Cray,
Fujitsu et NEC, pour ne citer que les
plus connus, l’ont fait. En général, on
vise plutôt à égaler la puissance d’un
processeur vectoriel en mettant en
parallèle plusieurs processeurs non vectoriels que, par opposition au terme vectoriel, on trouvera souvent déf inis
comme scalaires.
Le Cray C98, qui a remplacé le Cray 2 en 1992 pour
être opérationnel jusqu’en 1997. (Photo MétéoFrance, Jean-Marc Destruel)
1992), puis le Cray C98 (ou le C916)
proposaient de partager une mémoire
entre 4, puis 8, voire 16 processeurs.
Des instructions spéciales permettaient
de guider le système d’exploitation
lorsque cela était nécessaire.
La Météorologie - n° 55 - novembre 2006
21
Cependant, les conflits d’accès à une
mémoire centrale unique sont de plus en
plus difficiles à gérer avec 16 ou 32 processeurs et sont susceptibles de provoquer l’effondrement des performances.
Tout va dépendre, alors, de l’application
et de sa programmation (et tout particulièrement de l’usage que l’application
fait des données en mémoire). On
trouve aujourd’hui des serveurs qui proposent une mémoire partagée entre 64,
voire 128 processeurs. C’est l’application et sa manière d’accéder aux données qui vont déterminer l’efficacité
d’un système de ce genre. Certaines
applications s’en accommodent moins
bien que d’autres, la simulation en
météorologie et en climatologie est de
celles-là.
culateur (figure 1). Les calculateurs
Fujitsu VPP5000 actuellement exploités
par Météo-France sont de ce type ;
généralement les grilles (voir page 26)
de PC s’y apparentent également.
L’effort d’adaptation est, dans ce
schéma d’une mémoire répartie entre
plusieurs processeurs en réseau, reporté
vers les applications qui doivent intégrer l’architecture du calculateur et
piloter la répartition et les échanges de
données. Il reste encore, dans ce cas, à
répartir les calculs de manière aussi
équilibrée que possible entre les processeurs afin d’éviter que tous les processeurs, sauf un, n’attendent longuement
que le dernier ait terminé sa tâche. Ce
travail incombe également à l’applica-
Mémoire partagée :
les processeurs P1, P2, P3 et P4
accèdent tous à l’unique mémoire M
de la machine.
P1
P1
P1
P2
P2
P2
P3
P3
P3
P4
P4
P4
Mémoire répartie :
un processeur Pi n’accède
qu’à la mémoire Mi qui lui est rattachée ;
un réseau existe entre les mémoires
(ou entre les processeurs pour
d’autres architectures).
• Mémoire répartie
Ce modèle mixte est souvent présenté
comme cluster – terme largement usité
et parfois traduit par grappe – de
nœuds SMP (Symmetric MultiProcessor) par la littérature des constructeurs. Le calculateur IBM exploité
par le CEPMMT se range dans cette
catégorie, mais également les machines
proposées par nombre de constructeurs
parmi lesquels NEC (avec notamment
son Earth Simulator), HP-Compaq,
SGI, Bull (avec le système récemment
choisi par le CEA-DAM). La difficulté
de mise en œuvre d’un calculateur de ce
type est reportée, une fois encore, vers
la programmation des applications.
Des modèles de programmation
• Mémoire partagée
Modèle mixte :
un groupe de processeurs (P1 et P2)
n’accède qu’à une mémoire (M1)
qui lui est rattachée ; un réseau existe
entre les mémoires (ou entre
les processeurs pour d’autres
architectures) pour échanger
éventuellement des informations entre
deux processeurs de groupes différents.
Figure 1 - Schéma décrivant les différentes manières de rattacher de la mémoire à quatre processeurs P1, P2, P3 et P4.
Multiplier les processeurs partageant une
même mémoire peut constituer une
réponse au besoin de puissance de calcul,
mais il est possible que cette réponse soit
mal adaptée aux applications. On peut
donc prendre le parti inverse : chaque
processeur dispose de sa propre mémoire
et communique avec les autres par l’intermédiaire d’un réseau interne au cal-
le réseau interne qui est d’autant plus
intense que le nombre de processeurs
augmente. Mais si l’on souhaite disposer d’une puissance de calcul importante, ce nombre de processeurs est
élevé. L’idée est donc née de mêler les
deux types d’architecture en imaginant
une mémoire à deux niveaux : un premier
niveau sur lequel plusieurs processeurs se
partagent une mémoire, puis un second
pour lequel on relie entre elles de telles
entités par un réseau (f igure 1). On
conserve ainsi la notion de mémoire
répartie, non pas entre processeurs,
mais entre nœuds, c’est-à-dire entre
regroupements de processeurs. Cela
permet de disposer au niveau d’un
nœud d’une puissance de calcul importante accédant à une mémoire partagée
reliée à d’autres unités de même type
par un réseau.
tion et à son programmeur, et le lecteur
comprendra aisément qu’optimiser une
application sur un tel système n’est pas
une mince affaire.
• Mémoire mixte
Le modèle de calculateur à mémoire
répartie permet de s’affranchir des
contraintes de la mémoire partagée (les
conflits d’accès) au prix d’un trafic sur
La programmation est la plus aisée
lorsque la mémoire est partagée par les
processeurs : les conflits d’accès aux
données sont gérés au niveau du système et l’utilisateur peut disposer à sa
guise de toutes les variables apparaissant dans son programme. Une difficulté surgit cependant lorsque l’on veut
faire participer plusieurs processeurs,
en parallèle, à l’exécution de son programme.
Une première méthode consiste à se
reposer sur le compilateur qui peut détecter, via une analyse des dépendances, les
zones du programme (généralement des
boucles) qui sont parallélisables et
générer des instructions qui seront prises en compte à l’exécution pour une
parallélisation automatique (autotasking de Cray dans les années 1990, par
exemple). Malheureusement, l’efficacité de ces paralléliseurs est toute relative car ils peinent à déterminer les
dépendances dans les boucles : il peut
La Météorologie - n° 55 - novembre 2006
22
suffire d’une indirection dans un tableau
(TAB(INDIRECTION(I))) ou d’un
appel à un sous-programme pour que le
compilateur renonce, dans le doute, à sa
parallélisation.
C’est pourquoi le programmeur a été
rapidement sollicité pour prendre en
main ce travail. Cela a commencé par
des directives placées dans le code pour
autoriser ou interdire la parallélisation
par le compilateur. Mais les performances n’ont été vraiment au rendez-vous
qu’avec la mise à disposition de fonctionnalités plus poussées, comme le
macrotasking de Cray (interface propriétaire) ou plus récemment OpenMP.
Il devient alors possible d’organiser
complètement la parallélisation, de spécifier des zones mémoire réservées à
une tâche (pour le multitasking) ou à un
thread (pour OpenMP ; généralement,
un thread est équivalent à un processeur).
OpenMP a été défini conjointement par
un groupe de constructeurs de calculateurs à architecture SMP (Compaq, HP,
Intel, IBM, SGI, Sun, NEC) et d’éditeurs de logiciels. Ce consensus a permis la naissance d’un standard qui a été
très vite adopté : les programmeurs ont
vu d’un bon œil leur travail de parallélisation pouvoir être réutilisé sur la plupart des plate-formes. OpenMP est une
extension au langage de programmation
(Fortran ou C ou C++) et se présente
sous trois formes : des directives à insérer dans le programme, des appels à une
librairie et des variables d’environnement. OpenMP permet de créer une
« région parallèle » durant l’exécution
séquentielle d’un processus : à l’entrée
d’une région parallèle, le thread maître
donne naissance à autant de threads
esclaves que demandé lors du lancement du programme, et le processus
s’exécute en parallèle sur les différents
threads jusqu’à la fin de la région parallèle où le thread maître poursuit seul
l’exécution du programme. Plusieurs
régions parallèles peuvent se succéder.
Il faut, à l’entrée de chaque région
parallèle, spécifier les variables qui
seront partagées et celles qui seront
réservées (variables de travail accédées
en écriture généralement) à chacun des
threads. Il permet une parallélisation à
grain fin (figure 2) comme à gros grain
(figure 3).
La parallélisation à grain fin est souvent
plus facile à mettre en œuvre, mais ne
permet de traiter qu’une petite partie du
programme à la fois : il faut multiplier
le nombre de boucles parallélisées pour
augmenter la fraction parallélisée du programme, sans descendre sous un certain
grain où le coût de la parallélisation
(appels système, copies en mémoire,
etc.) devient supérieur ou égal au gain
qu’elle apporte.
… instructions …
!$OMP PARALLEL DO SCHEDULE (DYNAMIC,1)
!$OMP PRIVATE(JKGLO, IBL, IEND, …, ZMOCON, …)
… instructions …
DO JKGLO=1,IGPCOMP,NPROMA
IBL=(JKGLO-1)/NPROMA+1
IEND=MIN(NPROMA,IGPCOMP-JKGLO+1)
… instructions …
CALL MF_PHYS(…,IEND,…,
& PGMV(1,1,YT0%MT,IBL), ...,
& ZMOCON, …)
… instructions …
• Mémoire répartie
!$OMP END PARALLEL DO
… instructions…
… instruction …
… instructions…
Figure 2 - Exemple de parallélisation à grain fin avec
OpenMP. La région parallèle est délimitée par les
directives !$OMP PARALLEL et !$OMP END PARALLEL.
La directive !$OMP DO demande au compilateur
de paralléliser la boucle suivante (DO … ENDDO)
entre les threads, tandis que la directive
!$OMP PRIVATE désigne les variables (ici, JTER)
qui seront réservées à chaque thread (les autres
seront partagées). La directive !$OMP SCHEDULE
(STATIC) spécifie un découpage statique
des itérations entre les threads.
La parallélisation avec OpenMP présente
un gros avantage : la répartition dynamique des itérations entre les threads. En
effet, il est possible de demander que
l’ensemble des itérations d’une boucle
soit mis dans un pot commun dans lequel
les threads piocheront alternativement
jusqu’à ce qu’elles soient toutes réalisées.
Le coût de chaque itération peut être différent, les threads finiront généralement
leur travail avec peu de décalage.
Certains calculs – en points de grille – de
la physique dans les modèles atmosphériques présentent justement ce déséquilibre : la boucle de calculs se fait sur des
verticales et selon qu’il y a ou non saturation en eau, le traitement sera plus ou
moins coûteux (rayonnement, précipitation, etc.). Avec OpenMP (figure 3),
l’équilibrage de ces calculs entre les
threads peut se faire automatiquement
(directive !$OMP SCHEDULE (DYNAMIC,1)).
ENDDO
… instructions …
!$OMP PARALLEL
!$OMP DO
!$OMP SCHEDULE (STATIC)
!$OMP PRIVATE (JTER)
DO JTER = 1,N
A(JTER) = ALPHA*(B(JTER)-C(JTER))
D(JTER) = A(JTER) * D(JTER)
ENDDO
!$OMP END PARALLEL
les modèles Arpège ou Aladin, les calculs de la physique consomment environ 60 % du temps total et sont
effectués dans une boucle facilement
parallélisable avec OpenMP : c’est le
cas idéal où, en quelques directives
judicieuses, plus de la moitié d’un programme est parallélisée ! La loi
d’Amdahl (encadré page 23) montre
toutefois qu’il faut paralléliser 98,4 %
du programme pour utiliser huit threads
avec une efficacité de 90 % (nombre de
threads classique pour une architecture
SMP). Si l’on se contente de ne paralléliser que 60 % du programme, on n’utilisera les huit threads qu’avec une
efficacité de 26 %. En d’autres termes,
les trois quarts de la puissance des
huit processeurs seront gaspillés.
Figure 3 - Exemple de parallélisation à gros grain.
Les calculs de la physique pour les modèles Arpège
et Aladin sont faits dans la routine MF_PHYS qui traite
un nombre entier de verticales mises bout à bout
dans NPROMA et qui est appelée dans une boucle
parallélisée avec OpenMP. PGMV est une variable
d’entrée qui contient la température à l’instant t
et ZMOCON est une variable de sortie qui représente
la convergence d’humidité (exemples parmi près
de 200 variables). Les variables sont par défaut
partagées entre les threads et il faut donc préciser
celles qui seront propres à chaque thread
( !$OMP PRIVATE(…)).
La mise en place de la parallélisation à
gros grain requiert une analyse plus
poussée (dépendance cachée, accès en
écriture des variables), mais est souvent
plus efficace. Dans une prévision avec
Lorsque la mémoire est répartie entre
les processeurs, la parallélisation se
complique : après une analyse fine de
l’algorithme pour faire apparaître de
larges parties où le programme pourra
s’appliquer en parallèle sur des données
différentes, il faut coder la distribution
des données parmi les processeurs et
coder explicitement les échanges d’information entre processeurs.
Au début, plusieurs interfaces ont été
développées pour permettre la communication des processeurs entre eux (Parmacs,
PVM, SHMEM ou Craft pour Cray, MPL
pour IBM…), mais un standard a fini par
émerger dans les années 1990 : MPI
(Message Passing Interface).
La stratégie pour paralléliser change par
rapport à celle utilisée par OpenMP : il
faut imaginer une distribution de données
La Météorologie - n° 55 - novembre 2006
23
La loi d’Amdahl
La loi d’Amdahl estime l’accélération qu’apporte une parallélisation. Si p est le nombre de processus parallèles (nombre d’unités vectorielles dans le cas de la vectorisation, nombre de nœuds ou de processeurs dans le cas d’une parallélisation avec MPI,
ou nombre de threads dans le cas OpenMP) et f la fraction du programme qui est
parfaitement parallélisée (les coûts des appels système, d’alimentation des éventuels
registres, de la synchronisation et des éventuels échanges de messages sont négligés), l’accélération du programme, A (rapport du temps d’exécution séquencielle sur
le temps d’exécution en parallèle), peut être estimée à :
A=p/(f+p*(1-f)).
L’efficacité de la parallélisation est définie par Eff=A/p.
D’où le tableau ci-dessous qui présente l’accélération et l’efficacité (en pourcentage)
en fonction du nombre de processeurs « p » et de la fraction parallélisée du programme « f » :
2
8
32
128
0,6
f/p
1,4
71 %
2,1
26 %
2,4
7%
2,5
2%
512
2,5
0,5 %
Infini
2,5
0,8
1,7
83 %
3,3
42 %
4,4
14 %
4,8
4%
5
1%
5
0,9
1,8
91 %
4,7
59 %
7,8
24 %
9,3
7%
9,8
2%
10
0,95
1,9
95 %
5,9
74 %
12,5
39 %
17,4
14 %
19,3
4%
20
0,98
1,96
98 %
7
88 %
19,8
62 %
36,2
28 %
45,6
9%
50
0,99
1,98
99 %
7,5
93 %
24,4
76 %
56,4
44 %
83,8
16 %
100
0,999
2
99,9 %
7,9
99,3 %
31
97 %
114
89 %
339
66 %
1 000
Cela montre que le degré de parallélisation d’un programme est fondamental si l’on
veut utiliser efficacement de nombreux processeurs. Ainsi, en acceptant qu’un programme perde 25 % de la puissance disponible, il faut tout de même qu‘il soit parallélisé à 66,7 % si 2 processeurs sont utilisés, à 95,2 % pour 8 processeurs et à 99 %
pour 32 processeurs.
entre processeurs qui permettra d’exécuter le programme de façon indépendante
sur chaque processeur. Un environnement de parallélisation est généralement
créé pour naviguer entre les diverses
variables, locales (c’est-à-dire propres à
un processeur) ou globales, et pouvoir
repérer à l’aide d’indices les zones
mémoires propres à chaque processeur
dans les variables globales. Mais cette
fois, pour accéder au contenu d’une
variable qui appartient à un autre processeur, il faudra explicitement coder une
communication : un processeur fabriquera un message (identifiant, destinataire, type et nombre de données, etc.) et
l’enverra sur le réseau alors que le processeur destinataire devra se mettre en
réception (identifiant, expéditeur, type et
nombre de données, données). Tout cela
se réalise à l’aide d’appels à des routines
contenues dans une bibliothèque d’échanges de messages, comme MPI (pour
langage Fortran, C et C++).
Pour illustrer cette mise en œuvre, la
parallélisation d’un modèle atmosphérique utilisant la technique spectrale est
présentée dans l’annexe 1 et les aménagements de la parallélisation pour prendre
en compte le schéma semi-lagrangien(1)
sont décrits dans l’annexe 2, page 30.
• Programmation hybride
Avec l’avènement des clusters de nœuds
SMP, il devient possible de faire appel
simultanément aux deux précédents
types de parallélisation : MPI est utilisé
pour la parallélisation internœuds
(mémoire répartie) et OpenMP pour la
parallélisation intranœud (mémoire partagée). Il s’agit de retarder les limites
inhérentes à chacun de ces deux types.
En effet, la mémoire est rarement parta(1) Le schéma semi-lagrangien est un schéma
d’intégration temporelle traitant une partie des
termes des équations d’évolution en suivant le
trajet de la particule (lagrangien) et l’autre partie
en une grille de points fixes (eulérien).
gée par plus de 32 processeurs (limite
physique pour gérer les conflits d’accès)
et la parallélisation avec OpenMP perd
rapidement en efficacité au-delà de huit
processeurs (loi d’Amdahl). D’autre part,
la multiplication des tâches MPI finit par
générer un déséquilibre de la charge par
processeur (absence de répartition dynamique comme avec OpenMP) et la
décomposition des données en trop petits
éléments peut faire exploser le nombre de
transferts de petits messages entre les
processeurs et, au final, dégrader le ratio
calcul/communication, qui est un bon
indicateur de la performance de la parallélisation avec MPI. Si une telle programmation hybride demande le travail de
deux parallélisations, c’est une solution
séduisante pour répondre à l’augmentation du nombre de processeurs lorsque
l’efficacité de la parallélisation avec MPI
tend à chuter.
Aspects économiques
des machines
à mémoire répartie
Dès lors que l’architecture des calculateurs le permet, les constructeurs vont
pouvoir multiplier les processeurs pour
augmenter la puissance de calcul. Mais la
multiplication des processeurs est également source d’économie pour, à puissance de calcul équivalente, utiliser des
composants moins puissants, moins difficiles à imaginer et à fabriquer, donc
moins lourds en investissement.
Des composants banalisés
et une production de masse
Ce sont les mêmes composants et les
mêmes processeurs que l’on retrouve
dans les PC, dans les stations de travail
professionnelles, dans les serveurs et les
supercalculateurs. Seul change, d’un
produit à l’autre, l’environnement de
ces processeurs. Les composants sont
ainsi mis en œuvre en grand nombre et
peuvent être produits en grandes séries,
d’où, pour le constructeur, une économie d’échelle importante et un meilleur
amortissement des coûts de fabrication.
De plus, l’amortissement des coûts de
recherche et développement est
meilleur, puisqu’il peut se faire sur des
séries bien plus importantes que ne pouvaient l’être celles de calculateurs du
type Cray.
Des calculateurs à nouveau
polyvalents
Une conséquence directe de l’arrivée
sur le marché de ce type de calculateur
est que ce sont les mêmes machines qui
La Météorologie - n° 55 - novembre 2006
24
Et maintenant ?
Quelles sont aujourd’hui, les machines
qui dominent, sinon le marché, du
moins le petit monde du calcul scientifique ? Une indication en est fournie
par le Top 500 des calculateurs dont le
nom est explicite et qui est évoqué plus
loin.
Les architectures :
superscalaires
et clusters de PC
Si l’on excepte le Earth Simulator, qui
est d’une architecture quelque peu atypique, les machines qui se placent au
premier rang pour la puissance de calcul se répartissent en deux catégories :
les calculateurs SMP et les clusters (ou
grappe) de PC. Ces deux architectures
ont en commun de mettre en œuvre
une mémoire répartie, de reposer sur
des processeurs fabriqués en grande
Au centre de calcul de Météo-France, le Cray 2
cohabite avec le C98 jusqu’en 1994,
pour répondre aux besoins de la recherche.
Le VPP700E, premier calculateur du constructeur
japonais Fujitsu, opérationnel de 1997 à 2000.
(Photo Météo-France, Jean-Marc Destruel)
sont employées en gestion et en calcul
scientifique et technique. Les mêmes
processeurs sont reliés entre eux par le
même type de réseau (ou peu s’en faut)
et les constructeurs n’ont généralement
plus qu’une architecture à leur catalogue. On se trouve alors confronté à un
marché dont les règles de fonctionnement sont différentes, du simple fait que
le marché de l’informatique de gestion
est notablement plus important en
volume que le marché du calcul scientifique et technique, même si celui-ci
conserve son prestige.
Modèle d’accroissement
des performances
L’augmentation de la performance d’ensemble du système passe encore par
l’augmentation de la performance de
chacun des composants, mais elle peut
également passer par la multiplication
de ces composants. Le poids économique d’un tel accroissement se distingue de celui des autres modèles du fait
qu’il repose sur des composants produits en grande série, donc d’un coût
marginal réduit. Il est bien moins
coûteux de doubler la puissance en
installant un second processeur identique au premier (et produit en série)
qu’en doublant la vitesse de chacun des
composants au prix d’un effort technologique.
série pour un marché dépassant largement le seul cadre du calcul scientifique et d’utiliser un réseau interne
rapide.
Accès mémoire et cache
Le rôle du réseau interne
Avec une telle architecture, la pression
est mise sur le réseau interne qui
devient souvent le goulot d’étranglement du système. Le débit du réseau
augmente généralement moins vite que
la puissance de calcul, à cause d’une
technologie délicate, sensiblement différente de celle qui est mise en œuvre
dans les processeurs, et parfois moins
bien maîtrisée.
Les processeurs vectoriels, outre leur
vitesse de calcul, se caractérisent par la
rapidité des accès à la mémoire ; il faut
alimenter le processeur au rythme qui
convient. Les processeurs fabriqués en
grande série selon des technologies
moins coûteuses et visant un marché
élargi ne peuvent pas offrir des débits
mémoire comparables à ceux des processeurs vectoriels. Il leur faut donc
pallier cette relative lenteur des accès
mémoire par des dispositifs adaptés.
La Météorologie - n° 55 - novembre 2006
Le plus répandu est le cache, une
mémoire beaucoup plus rapide que la
mémoire centrale, puisqu’elle permet le
fonctionnement du processeur à sa
vitesse nominale. Elle est donc de taille
réduite, et plus coûteuse. Tout le travail
du programmeur, dans la phase d’optimisation du code de son application,
consistera à faire en sorte que les données utiles se trouvent dans le cache
quand l’unité de traitement en a besoin.
L’exercice peut passer pour relativement
simple, du moins dans son principe, sur
un seul processeur. Il en va tout autrement si l’on considère que les systèmes
dont on parle ici peuvent compter plusieurs centaines, voire plusieurs milliers
de processeurs. Une donnée modifiée
par un processeur doit pouvoir être utilisée immédiatement par un autre processeur. C’est tout le problème, bien plus
difficile à résoudre qu’à formuler, de la
cohérence du cache qui est à la charge
du système d’exploitation (et, une fois
n’est pas coutume, non pas à la charge
du programmeur qui peut ignorer sur
quels processeurs s’exécute son application).
25
anticiper la lecture, tant des données que des instructions des programmes. Ainsi, le système d’exploitation ne se contentera pas de charger
dans le cache la donnée demandée,
mais il anticipera la demande en chargeant le contenu de toute une zone
de mémoire autour de celle qui
est demandée. Cette technique est
d’ailleurs très ancienne et se rencontrait déjà sur les machines des ori-
gines (par exemple, dans le traitement
des entrées-sorties sur certains périphériques lents, comme les disques).
On peut généraliser cette pratique à
l’exécution du code d’un programme.
Lorsque le système d’exploitation rencontre un test dans un programme, il
lance simultanément l’exécution des
deux branches de code avant même
d’obtenir le résultat du test, puis ne
conserve que la branche correspondant
au résultat. Il perd ainsi un peu de temps
dans l’exécution de la branche morte,
mais en gagne bien davantage en anticipant tous les accès à la mémoire pendant
le temps d’évaluation du résultat du test.
On parle alors d’exécution spéculative.
Anticipation d’exécution
et des accès mémoire
Des dispositifs différents
Une autre manière de pallier la relative lenteur des accès à la mémoire sur
les processeurs scalaires consiste à
Les processeurs scalaires récents intègrent un nombre croissant de dispositifs qui étaient proposés par les
machines vectorielles. On trouve ainsi,
sur les processeurs d’aujourd’hui, des
structures de pipe-line telles que celle
décrite auparavant pour le Cray 1 et
des dispositifs de prédiction de branchement destinés à prévenir la rupture
du flux d’alimentation du pipe-line.
Certains processeurs sont dits superscalaires lorsqu’ils disposent de plusieurs pipe-lines d’instructions, traitant
Le VPP5000, deuxième calculateur
Fujitsu, opérationnel de 2000 à 2003
avec 31 processeurs.
Il sera étendu à 124 processeurs
pour être opérationnel jusqu’en 2007.
(Photo Météo-France,
Jean-Marc Destruel)
ainsi plusieurs instructions en parallèle. Ils peuvent alors exécuter les
instructions d’un programme dans un
ordre différent de celui dans lequel
elles ont été écrites, ce qui peut en
accélérer considérablement l’exécution. Les processeurs superscalaires les
plus récents affichent maintenant des
vitesses de l’ordre de plusieurs gigaflops (milliards d’instructions en virgule flottante par seconde), ce qui les
place au niveau des processeurs vectoriels pour ce qui est de la performance
crête, la performance soutenue,
effective, restant largement tributaire
du type d’application.
La Météorologie - n° 55 - novembre 2006
26
Retour ou survivance du vectoriel ?
Le Top 500
Il s’agit là, dans la profession, d’une institution. Critiquable et critiquée, elle est
considérée comme incontournable,
comme l’est toute institution, mais elle
donne malgré tout de bonnes indications
quant à la vie du marché des calculateurs
scientifiques. Cette liste des 500 plus gros
calculateurs au monde est maintenue
depuis 1993, remise à jour deux fois par an
à l’occasion du salon Supercomputing qui
se tient en alternance en Europe et aux
États-Unis. Sa relative faiblesse est d’être
construite à partir d’un banc d’essai (un
code d’algèbre linéaire connu sous le nom
de Linpack) artificiel et unique, donc faiblement représentatif des applications réelles que sont la simulation climatique ou
météorologique, et favorisant certaines
architectures de machines en ne tenant que
faiblement compte des communications
internes aux applications qui sollicitent le
réseau. Sa force vient du fait que la faiblesse que nous venons de décrire est
connue et que le biais qu’elle induit est
repéré, et surtout que l’on en est à la vingtquatrième édition, ce qui constitue un tour
de force en soi… On se reportera, pour
davantage de détails au site Internet dédié
[www.top500.org].
Earth Simulator
Impossible, depuis bientôt quatre ans,
de traiter du calcul scientifique sans
évoquer ce calculateur hors norme, premier de la liste du Top 500 pendant plus
de deux ans et détrôné de justesse en
novembre 2004.
Il s’agit d’un calculateur composé de
processeurs vectoriels (d’une puissance
de 8 gigaflops chacun) regroupés en nœuds
de 8 sur une mémoire partagée de 16 gigaoctets. La machine compte 640 nœuds de
ce type pour un total de 5 120 processeurs et une mémoire globale de 10 teraoctets (10 000 milliards d’octets). Un
réseau interne relie chaque nœud à
chacun des autres, avec un débit de
12,3 gigaoctets par seconde, dans chaque
sens. Son hébergement a nécessité la
construction d’un bâtiment de 65 mètres
sur 50.
Quel impact sur le marché ?
On est en droit, toutefois, de s’interroger
sur la portée réelle de telles réalisations.
Relativement à sa domination du marché du calcul scientif ique dans les
années 1970 et 1980, la présence de la
technologie vectorielle a beaucoup
régressé devant les progrès de la technologie scalaire et son impact économique.
Deux constructeurs seulement, aujourd’hui, proposent des processeurs vectoriels : NEC et Cray – Fujitsu a
Le rôle du réseau desservant un tel
nombre de processeurs devient vital,
plus important même que celui des
processeurs. Si l’on peut tolérer que
quelques processeurs tombent en
panne, et c’est toujours le cas vu leur
nombre, il est en revanche impossible
de laisser le réseau se dégrader, car
alors toutes les applications ralentissent
ou se bloquent complètement.
Earth Simulator constituait un véritable
défi technologique relevé par le gouvernement japonais et dont la construction a été
confiée à la société NEC. Les processeurs
développés à cette occasion sont maintenant, après quelques adaptations, commercialisés sous l’appellation de SX-6.
Aujourd’hui, quelques applications, au
premier rang desquelles figure la simulation du climat, commencent à utiliser une
fraction significative de la machine.
La liste des cinq premiers calculateurs du classement de novembre 2004 reflète
la diversité des architectures.
Puissance Constructeur
crête (tflops)
Les très gros clusters
Le Japon, avec Earth Simulator, a occupé
le premier rang au monde pendant plus
de deux ans. La réponse des États-Unis
était attendue. Elle est arrivée à la fin de
l’année 2004 qui a vu deux systèmes
récemment installés prendre les deux premières places au Top 500. Les deux systèmes sont du type cluster de processeurs
superscalaires. Le premier aligne plus de
32 000 processeurs, le second plus de
10 000. Il n’est pas aisé de se faire une
idée des applications qui sauront
exploiter de tels calculateurs, mais le
défi comportait un enjeu stratégique
évident.
Top 500
Rang
interrompu cette ligne de produits après
le VPP5000). Encore font-ils tout leur
possible pour diversifier leur offre et
présenter une gamme scalaire. Qui,
actuellement, peut construire une salle
de ces dimensions pour une telle installation ? Et quel serait le coût de commercialisation d’un tel système ? NEC
utilise son succès technologique comme
un support, un peu comme la Formule 1
dope les ventes d’automobiles.
Organisme
Architecture
et type de processeur
Pour ce qui est du gigantisme, enfin, ces
systèmes n’ont rien à envier à la réalisation japonaise. La salle de calcul est
immense, la consommation électrique
se chiffre en mégawatts.
Nombre
Nombre
de nœuds processeurs
1
91 750
IBM
IBM/DOE
PowerPC 2 processeurs
16 384
32 768
La grille, une piste nouvelle ?
2
60 960
SGI
NASA
SMP scalaire Itanium
20
10 240
3
40 960
NEC
Earth Simulator
SMP vectoriel
640
5 120
La grille de calcul est le nom le plus fréquemment donné – et la traduction la
plus répandue du terme américain grid
computing – à l’emploi de techniques
qui permettent de faire coopérer plus ou
moins étroitement plusieurs calculateurs reliés en réseau sur une même
application. Le domaine est encore en
pleine effervescence et plusieurs solutions venant de constructeurs ou du
domaine public cohabitent et s’influencent mutuellement.
4
31 363
IBM
Centre calcul Barcelone
PowerPC 2 processeurs
2 268
4 536
5
22 938
Intel
LLNL
Itanium 4 processeurs
1 024
4 096
Le CEPMMT occupait les 11e et 12e rangs (avec deux calculateurs identiques). Si cet
ensemble était considéré comme un calculateur unique, celui-ci occuperait la 6e place.
Le premier site français est le CEA/DAM, avec une installation (HP Compaq) remontant à l’année 2000, en 41e position.
Les calculateurs de Météo-France sont sortis du classement. S’ils étaient considérés
comme un calculateur unique, leurs puissances cumulées placeraient cet ensemble au
331e rang.
Un an après, sur les dix premières machines du classement de novembre 2005, huit
sont installées depuis moins d’un an, le calculateur Earth Simulator figure en 7e position, le CEPMMT occupe les 33e et 34e places (et occuperait la 12e place en cumulant
les puissances de ses deux machines), le CEA figure au 62e rang et les calculateurs de
Météo-France, même en cumulant leurs efforts, ne figurent plus au classement.
Un exemple original en est fourni
par l’expérimentation Climate prediction [www.climateprediction.net]
menée depuis 2003 par le Met Office
La Météorologie - n° 55 - novembre 2006
britannique en collaboration avec des
universités de Grande-Bretagne. Elle
consiste à mettre en œuvre à grande
échelle les techniques de la prévision
d’ensemble sur des modèles climatiques
afin d’élaborer une prévision pour le XXIe
siècle. Le site Internet de l’expérience
propose au public de charger un modèle
climatique et ses données sur son PC.
Une fois lancée, l’application s’exécute
en tâche de fond sur le PC, employant la
puissance de calcul inutilisée de la
machine. Une seule simulation dure de
quinze jours à plus d’un mois (selon la
puissance de la machine). Le site Internet
se charge ensuite de récupérer et de
visualiser les résultats ainsi obtenus et
fournit de nouvelles données pour relancer le modèle. L’expérimentation est déjà
jugée prometteuse et les premiers résultats en ont été publiés par la revue Nature
en janvier 2005 (Stainforth et al., 2005).
L’idée est séduisante et, sans aller jusqu’à
utiliser les PC du grand public pendant
les heures où ils sont inutilisés, on peut
imaginer des modèles de simulation
s’exécutant la nuit sur les ordinateurs de
toute une collectivité. Les problèmes
techniques sont innombrables, même
s’ils semblent avoir été résolus par l’expérimentation Climateprediction. Mais il
doit être possible de s’inspirer de cette
expérience pour des simulations en mode
recherche (pas de délais trop stricts ni de
contraintes de type temps réel). En revanche, on en est beaucoup plus loin pour
une simulation en prévision qui s’accommode très mal de délais qui ne seraient
pas complètement maîtrisés et qui
impose des contraintes fortes sur la
disponibilité, la fiabilité et la sécurisation
des infrastructures.
Le cas de la simulation
climatique et de la prévision
Quel est le comportement des codes
actuels de prévision numérique ou de
simulation climatique sur ces calculateurs ? Il est d’usage de considérer
comme un bon indicateur de ce comportement ce qu’il est convenu d’appeler
l’efficacité du code, c’est-à-dire le rapport entre la puissance soutenue, effectivement mise en œuvre par ce code, et la
puissance crête. Sur les processeurs vectoriels, l’ensemble de la communauté
s’accorde à évaluer ce rapport autour de
30 à 35 % (valeur obtenue sur l’ensemble
de la chaîne de prévision opérationnelle
de Météo-France en comptabilisant les
phases d’initialisation et de terminaison,
les entrées-sorties), ce chiffre est très voisin de ceux qu’obtiennent les autres services météorologiques et est considéré
27
du temps puissent se comporter aussi
bien sur une architecture que sur une
autre. Ce qui coûte, en revanche, c’est
ce que l’on appelle le portage, et qui
consiste à prendre un code développé
sur une architecture puis à l’adapter et à
l’optimiser sur une autre.
comme bon par les constructeurs. Sur les
processeurs scalaires, ce rapport est de
l’ordre de 6 à 8 %. Sur certains processeurs superscalaires, après un lourd travail d’optimisation ou de réécriture, on
peut parfois espérer atteindre 10 à 15 %.
D’où peut provenir une telle différence ?
On peut l’attribuer au fait que les mécanismes mis en jeu par la simulation
numérique du temps, et leur traduction en
termes mathématiques puis informatiques, sont bien adaptés à l’architecture
vectorielle, l’exemple le plus immédiat
Si l’on excepte la généralisation de la
mémoire répartie, il est difficile de tirer
un enseignement de ce qui se passe dans
les grands centres de prévision ou de
simulation climatique. Certains exploitent un calculateur à architecture vecto-
Les calculateurs à Météo-France
de 1984 à 2006
2003
2000
1998
1995
Performance crête
Performance soutenue
1993
1987
1984
0
200
Période
400
600
800
1 000
Puissance (Gflops/s)
1 200
1 400
1984-1987 1987-1993 1993-1995 1995-1998 1998-2000 2000-2003 2003-2006
Constructeur
Cray
Cray
Cray
Cray
Fujitsu
Fujitsu
Fujitsu
Machine
Cray 1
Cray 2
C90
C90
VPP700
VPP5000
VPP5000
1
2
4
8
26
Type des processeurs
vectoriel
vectoriel
vectoriel
vectoriel
vectoriel
vectoriel
vectoriel
Type de mémoire
partagée
partagée
partagée
partagée
répartie
répartie
répartie
Nombre de processeurs
31
124
Puissance crête (Gflops/s)
0,16
1
4
8
62,4
298
1 190
Puissance soutenue (Gflops/s)
0,1
0,5
1,5
3
19
89
357
Description de la série de supercalculateurs
étant le traitement dans un vecteur d’une
variable sur toute une verticale. Mais cela
mérite d’être nuancé. En premier lieu
parce que c’est beaucoup moins vrai dans
les traitements de l’analyse variationnelle
en quatre dimensions pour lesquels les
processeurs superscalaires semblent plus
efficaces que les processeurs vectoriels
(les équipes du CEPMMT et de MétéoFrance l’ont vérifié). Ensuite parce que
l’on ne peut pas exclure que ce sont peutêtre les programmeurs qui se seraient
bien adaptés à l’architecture vectorielle
plutôt que les algorithmes… Il se pourrait
donc que les choses ne soient pas figées
et que les codes de simulation numérique
rielle (c’est le cas de la France, mais aussi
de la Grande-Bretagne, de l’Espagne),
d’autres un calculateur à architecture
superscalaire (CEPMMT, États-Unis,
Canada, Allemagne). Une mention particulière peut être faite de l’Allemagne qui
dispose d’un calculateur vectoriel pour la
simulation climatique et d’un calculateur
scalaire pour la prévision météorologique ; une autre concerne le service
météorologique de Grande-Bretagne qui
fut parmi les premiers, en 1996, à passer
d’un Cray C916 (vectoriel à mémoire
partagée) à un T3E (scalaire à mémoire
répartie) et qui est revenu en 2003 à l’architecture vectorielle (mettant en œuvre
La Météorologie - n° 55 - novembre 2006
28
un modèle de mémoire mixte) au terme
d’un appel d’offres remporté par le constructeur japonais NEC.
En guise
de conclusion
Les codes des applications de prévision
numérique du temps et de simulation
climatique sont très proches car ils traitent les mêmes équations de la physique
et mettent en œuvre les mêmes algorithmes, ils sont souvent communs et ne
différant que par la paramétrisation. Ils
se comporteront donc, sur un calcula-
Glossaire
Mémoire partagée,
mémoire répartie
Dans le modèle à mémoire partagée, plusieurs
processeurs se partagent une même mémoire, le
système d’exploitation du calculateur se chargeant de prévenir les risques de collision. Dans le
modèle à mémoire répartie (nommée aussi
mémoire distribuée), chaque processeur dispose
de sa mémoire en propre et accède aux informations détenues par un autre processeur en lui
adressant une requête adaptée.
Performance crête,
performance soutenue
On aborde la performance (ou la puissance)
d’un calculateur essentiellement de deux
manières.
On parlera de puissance crête pour évoquer
la vitesse de pointe d’un calculateur, celle qui
serait accessible seulement à un code parfait
exploitant à plein la machine pendant un
temps infini. Dans un tel schéma, on ne perd
pas un cycle d’horloge et on évalue la puissance théorique maximale du calculateur, la
vitesse que l’on ne pourra jamais dépasser ni
même atteindre. On mesure ainsi la prouesse
technologique que constitue la réalisation
d’une telle machine.
On parlera de puissance soutenue quand on
mesurera effectivement la vitesse d’exécution
d’une application réelle sur un calculateur, en
connaissant le nombre d’instructions exécutées
et en mesurant le temps nécessaire à cette exécution. On mesure ainsi l’adéquation entre une
application et un calculateur, avec l’inconvénient
d’obtenir, sur une même machine, autant de chiffres que d’applications.
Microprogrammation
Technique remontant aux années 1960 par
laquelle on décompose chacune des instructions d’un calculateur en une séquence d’instructions élémentaires simples (les
micro-instructions). Les constructeurs peuvent
ainsi directement câbler le jeu d’instructions sur
les plus gros systèmes (là où cet investissement
permettra d’augmenter la vitesse d’exécution)
et se contenter de « microprogrammer » les
teur donné, sensiblement de la même
manière, mais en imposant des contraintes différentes de temps de réponse et de
délais de restitution. Ces applications
sont à ce point exigeantes en termes de
puissance de traitement, de vitesse de
calcul et de stockage de l’information,
qu’elles nécessitent les solutions techniques les plus avancées. La prévision
numérique est, depuis le début, parmi
les utilisateurs des plus gros calculateurs. Toutes les technologies, à mesure
de leur apparition, ont été utilisées ou,
au moins, expérimentées.
Peut-on pour autant s’autoriser à évoquer
le calculateur ou au moins la technique la
plus adaptée ? Il semblerait que non, pour
instructions les plus complexes sur les systèmes
plus petits et moins coûteux (quand la vitesse
d’exécution n’est pas la préoccupation première). Il en résulte une unification des jeux
d’instructions sur toute la gamme des calculateurs proposés par un constructeur.
Calculateur séquentiel
Ce nom vient de ce que, sur un tel calculateur,
les instructions des programmes étaient exécutées en séquence, dans l’ordre de leur programmation.
Processeurs vectoriels
Processeurs permettant l’exécution simultanée (ou quasi simultanée) d’une même
instruction sur tout un ensemble de valeurs.
Les données à traiter ainsi sont structurées en
tableaux unidimensionnels appelés vecteurs,
dont tous les éléments subiront la même opération. Une telle opération est réalisée par
l’exécution d’une instruction unique qui porte
alors, non pas sur une donnée, mais sur toutes
les données du vecteur. Le système est affiné
par l’usage d’un masque permettant d’inhiber
un traitement sur certains éléments. Dans un
calculateur séquentiel, on décode et on exécute l’instruction à effectuer sur les données
autant de fois qu’il y a d’éléments dans le vecteur. Dans un calculateur vectoriel, on décode
et on exécute une seule instruction pour l’ensemble des données d’un vecteur.
Processeurs scalaires
Ces processeurs sont ainsi appelés, par opposition avec les processeurs vectoriels. Ils ont
un fonctionnement général très proche de
celui des calculateurs séquentiels, et ont généralement intégré beaucoup des avancées
technologiques venant du calcul vectoriel
comme les dispositifs de pipe-line, par exemple. Ce sont des composants qu’on retrouve
dans toute la gamme d’un même constructeur, fabriqués en grande série pour atteindre
un coût aussi peu élevé que possible.
Pipe-line
Dans un tel dispositif, une instruction est considérée comme complexe et décomposable en
plusieurs instructions élémentaires dont la
durée n’est que d’un cycle de l’horloge centrale
plusieurs raisons. Le marché des calculateurs scientifiques a déjà beaucoup mûri.
Il est cependant encore tellement évolutif
– la perpétuation de la loi de Moore, à
elle seule, suffirait à en témoigner –
qu’aujourd’hui encore, tout semble
ouvert, sans même qu’il soit utile pour
cela d’aller jusqu’à évoquer les recherches les plus futuristes (sur les ordinateurs quantiques ou cellulaires, par
exemple). Par ailleurs, les chercheurs, les
numériciens et les informaticiens ont su
chaque fois adapter la programmation
des modèles afin de tirer le maximum
des calculateurs qu’ils avaient à leur
disposition, et on peut leur faire confiance
pour faire encore de bien des machines le
calculateur idéal… du moment
du calculateur. On organise alors le travail à la
chaîne des diverses instructions élémentaires
constituant une instruction complexe. Ainsi,
par exemple, si l’addition d’une valeur à tous
les éléments d’un vecteur est décomposée en
quatre parties successives, le premier élément
du vecteur sera traité par la première partie de
l’instruction d’addition, puis passera dans la
deuxième partie en même temps que le
deuxième élément du vecteur sera traité par la
première, et ainsi de suite.
Message Passing Interface
(MPI )
MPI est une extension au langage de programmation (Fortran, C, C++) pour échanger des
données entre processeurs. Cela permet de
paralléliser une application sur une plateforme à mémoire répartie.
OpenMP
OpenMP est une extension au langage de
programmation (Fortran, C, C++) pour exécuter un ensemble d’instructions en parallèle par
plusieurs processeurs sur une mémoire partagée. Généralement il s’agit de distribuer les
itérations d’une boucle de calculs indépendants à plusieurs processeurs.
Symmetric Multiprocessor
(SMP)
Architecture se présentant sous la forme d’un
ensemble de processeurs accédant à une
même mémoire. On parle ainsi d’un nœud
SMP. L’interconnexion de tels nœuds forme
un cluster.
Prévision d’ensemble
Technique consistant à faire tourner plusieurs
fois un ou plusieurs modèles de prévision sur
une même situation, en introduisant une perturbation (légère modification des données
initiales), différente à chaque simulation. Les
résultats font ensuite l’objet de traitements statistiques. Cette technique est considérée
comme la plus prometteuse pour les échéances supérieures à 10 ou 15 jours, et elle est
mise en œuvre par le CEPMMT depuis plusieurs années. Elle sert de base au calcul de
l’indice de confiance publié avec les prévisions de Météo-France.
La Météorologie - n° 55 - novembre 2006
29
Bibliographie
Coiffier J., 2000 : Un demi-siècle de prévision numérique du temps, La Météorologie 8e série, 30, 11-31.
Stainforth D. A., T. Aina, C. Christensen, M. Collins, N. Faull, D. J. Frame, J. A. Kettleboruough, S. Knight, A. Martin, J. M. Murphy, C. Piani, D. Sexton,
L. A. Smith, R. A. Sicer, A. J. Thorpe et M. R. Allen : Uncertainty in predictions of the climate response to rising levels of greenhouse gases. Nature, 7024, 403-406.
www.top500.org
www.climateprediction.net
www.es.jamstec.go.jp : site officiel du centre du calculateur Earth Simulator
www.ecmwf.int : site du CEPMMT.
www.cs.wisc.edu/~arch/www : architectures des calculateurs.
www.thocp.net : site The history of computing project, la jeune histoire des calculateurs, voir en particulier, l’index “hardware”.
hwww.tstt-scidac.org : le site Terascale Simulation Tools sur la manière dont les États-Unis abordent le futur proche.
www.irisa.fr/orap : site de l’Orap (Organisation associative du parallélisme), association de promotion du calcul haute performance (à laquelle Météo-France participe).
Dossiers - Annexe 1
http//dsonline.computer.org/parallel : l’actualité dans le domaine des systèmes distribués.
Parallélisation avec MPI d’un modèle atmosphérique « spectral »
à troncature triangulaire (comme le modèle Arpège)
Dans ce type de modèle, une partie des
équations de la dynamique est résolue
dans l’espace spectral, pour des raisons
d’efficacité, alors que le reste, dont les
calculs de la physique, est évalué dans
l’espace point de grille (figure 4 pour
une description rapide de ces espaces de
calculs).
À chaque pas de temps, il faut donc
passer d’un espace à l’autre et revenir.
Pour respecter les dépendances dans les
calculs, l’espace point de grille est distribué par bande de latitudes avec des
verticales complètes, alors que l’espace
spectral est distribué selon le nombre
d’onde zonal, toujours avec des verticales complètes. Cela est schématisé sur
la figure 5. On peut faire deux observations.
Espace en points de grille
J
J latitudes, L longitudes et K niveaux verticaux (non représentés sur la figure).
j
1
1
1
Transformée de Fourier directe
1
u(l,j,k)e
L l=1
L
um(j,k)=
D’autre part, dans l’espace de Fourier,
deux distributions de données doivent
alternativement être utilisées :
– soit en bandes de latitudes complètes
avant une transformée de Fourier directe
J
1
Transformée de Fourier inverse
+M
1
u(l,j,k)= um(j,k)e -2im L
m=-M
J latitudes, M+1 nombres d’onde zonaux et K niveaux verticaux (non représentés
sur la figure).
0
m
M
C’est un espace qui se présente horizontalement sous la forme de latitudes
où la variable u est décomposée spectralement sur une base de fonctions trigonométriques : um(j,k) est son coefficient de Fourier pour le me nombre
d’onde sur la je latitude et le ke niveau. Les nombres d’onde supérieurs à la
troncature M ne sont pas représentés dans cet espace discrétisé.
Transformée de Legendre directe
J
umn (k)= w(j)um(j,k)Pn m(j)
j=1
Transformée de Legendre inverse
M
um (j,k)= unm(k)Pn m(j)
n=m
w(j) est le poids de Gauss pour la je latitude et P m(j) est le polynôme de Legendre
de degré n et d’ordre m.
n
Espace spectral
M
M nombres d’onde totaux, M nombres d’onde zonaux et K niveaux verticaux.
n
0
Figure 4 - Description sommaire des espaces
de calcul dans le modèle global et spectral Arpège.
1
-2im
L
Espace de Fourier
j
D’une part, pour équilibrer la charge
entre les tâches, les latitudes distribuées
aux processeurs ne sont pas toujours
complètes (dans le but de répartir au
mieux les points de grille entre les processeurs af in de mieux répartir la
charge de calcul) ; dans l’espace spectral, la distribution des nombres d’onde
zonaux ne se fait pas de façon contiguë,
mais en respectant une alternance afin
que, au final, les processeurs effectuent
des calculs sur des nombres voisins de
coefficients spectraux.
L
C’est l’espace tel que nous le percevons, mais discrétisé : la variable u prend la valeur u(l,j,k) au point de
grille (l,j,k) sur la le longitude, la j e latitude et le ke
niveau.
m
M
C’est un espace qui se représente horizontalement sous la forme d’un
triangle avec des coordonnées n et m vérifiant :
0 ≤ m ≤ n ≤ M où M est appelée troncature.
unm(k) est le coefficient spectral de la variable u pour le nombre d’onde
total n et le nombre d’onde zonal m sur le ke niveau.
La Météorologie - n° 55 - novembre 2006
30
y
y
y
Échange
de messages
y
Échange
de messages
(transposition)
Transformée
de Fourier
x
Espace en points de grille
x
x
Espace de Fourier
x
Transformée de Legendre
Pour passer d’une distribution de données à une autre, il faut procéder à un
échange général de messages entre processeurs grâce à MPI : la transposition
de données. Sur cet exemple, on comprend que la parallélisation n’est pas
facile à mettre en œuvre dans ce type de
programme où les distributions de données évoluent au cours de l’intégration.
On s’attend aussi à ce que l’efficacité de
la parallélisation baisse lorsque le nombre de processeurs sollicités augmente.
Heureusement, lorsque la troncature (ou
la résolution) augmente aussi, le poids
des calculs supplémentaires à réaliser
augmente tellement que le coût de ces
échanges de messages s’amenuise relativement à ces calculs et on peut alors augmenter le nombre de processeurs pour
une même efficacité.
y n
Figure 5 Pour un modèle
atmosphérique
spectral et global,
distribution
de données entre
3 processeurs
(P1, P2 et P3)
dans l’espace
points de grille
et dans l’espace
spectral avec mise
en évidence
des échanges
de données entre
processeurs.
x
Espace spectral
P1
P2
P2
Parallélisation avec MPI d’un modèle
utilisant un schéma d’intégration semi-lagrangien
La prise en compte du schéma semilagrangien est un autre exemple intéressant de parallélisation : ce schéma
nécessite le calcul d’une rétro-trajectoire (sur deux pas de temps) à partir de
chaque point de grille et l’interpolation
de diverses variables au point de départ
et au milieu de la trajectoire. Les calculs
sont faits dans l’espace point de grille
qui est distribué entre les processeurs
par domaines contigus. On comprend
naturellement que la rétro-trajectoire
peut parfaitement déborder du domaine
dévolu à un processeur et que ce processeur, pour mener à bien ses calculs,
devra connaître la valeur de certaines
variables appartenant donc à d’autres
processeurs. La solution qui a été retenue est de compléter le domaine réservé
à chaque processeur par un « halo » de
points (en fait des verticales complètes)
de largeur 2∆txVmax (plus quelques
points de grille pour l’interpolation), où
∆t est le pas de temps et Vmax le module
maximal du vent sur le globe. Ce halo est
mis à jour avant l’application du schéma
à l’aide d’échanges de messages. Pour
limiter le volume de données échangées
à cette occasion, une décomposition de
domaine qui redécoupe les bandes de
latitudes a même été proposée pour
donner une forme plus compacte au
domaine distribué à chaque processeur.
Cette décomposition se révèle très intéressante lorsque le nombre de processeurs dépasse quelques dizaines.
Dossier - Annexe 2
(ou inverse) car cette transformation
nécessite de connaître toutes les valeurs
sur une latitude complète (figure 4) ;
– soit selon les nombres d’onde zonaux
avant une transformée de Legendre
directe (ou inverse) car cette transformation nécessite de connaître toutes les
valeurs pour un nombre d’onde zonal
donné (figure 4).
Fly UP