Préface
Ce cours a été originellement défini et enseigné par Patrick
Cousot (Ecole Normale Supérieure) et Alain Bamberger (Institut Français
du Pétrole). Les notes qui suivent se sont grandement inspirées de
leurs cours.
L'objectif est de montrer à l'étudiant comment programmer efficacement
une machine parallèle, à travers un certain nombre d'exemples venant
du monde du calcul scientifique. En passant, on en profite pour parler d'algorithmique
parallèle et distribuée, d'architecture, de sémantique, et bien
entendu de mathématiques appliquées.
On a choisi comme support informatique, la librairie de passage de messages
PVM, qui permet de programmer aussi bien des super-calculateurs que des réseaux
de stations. Cette librairie est très utilisée dans le monde scientifique
(même si elle est maintenant détronée par MPI) et ressemble fortement
à la plupart des autres librairies de passages de messages utilisées
par ailleurs. Nous faisons un comparatif à l'annexe B. Le
``kit de survie'' pour programmer (sous PVM) est principalement constitué
des chapitres 1 et 2, ainsi que de l'annexe C.
Des compléments sont faits dans les chapitres 5 et 6,
mais ne sont tout de même pas exhaustifs; pour plus de détails on
se reportera au livre [GBD+94].
Les notions plus pérennes du parallélisme (avec une idée d'application
scientifique) sont développées au chapitre 7. Son but
principal est de faire comprendre la difficulté à assurer un bon rendement
et de bonnes performances sur des machines parallèles, à travers des
exemples. Les notions pérennes du parallélisme (coté sémantique,
c'est à dire avec l'idée d'assurer la correction du programme plutôt
que sa performance) sont brièvement développées à l'annexe
A.
Enfin, deux applications typiques du calcul scientifiques (parallèle) sont
entièrement décrites dans les chapitres 3, 4
et 8. Les deux premiers sont consacrés à des problèmes
directs alors que le dernier est plutôt consacré à des problèmes
inverses. On discute non seulement les mathématiques sous-jacentes mais
également l'implémentation et la parallélisation du calcul.
Un complément utile du cours est le polycopié d'Alain Bamberger [Bam98].
On pourra également consulter les compléments et errata du cours à
l'adresse http://w3.edu.polytechnique.edu/profs/informatique/Eric.Goubault
ainsi que la page web de l'ORAP http://www.irisa.fr/orap/, de PVM http://www.ep
m.ornl.gov/pvm/ et de MPI http://www.mcs.anl.gov/mpi/index.html.
Enfin, on conseille la lecture (même rapide) de livres tels que [LER92]
et [CS98]. Des cours similaires ou complémentaires ont
été enseignés par ailleurs, en particulier à l'IDRIS http://www.idris.fr/data/cours/cours-IDRIS.html#PVM
au MIT http://command.mit.edu/18.337 et à Berkeley http://now.CS.Berkeley.E
DU/cs267/.