Sous-sections
Mots clés : modèle de programmation,
environnement d'exécution, processus léger, communication par
message, accès de mémoire à distance, ordonnancement
.
Résumé :
Les noyaux exécutifs implantent un modèle de machine
parallèle ou machine virtuelle parallèle. Ils ont pour
fonction de gérer les ressources de calcul, de stockage et
de communication. La qualité d'un noyau exécutif pour
machine parallèle vient d'une part de ses capacités à
permettre l'utilisation efficace du parallélisme physique
de la machine et, d'autre part, de son aptitude à supporter
différentes pratiques ou modèles de parallélisation. Les
noyaux exécutifs les plus répandus actuellement pour la
programmation parallèle sont PVM et MPI. Ils simulent un
réseau de monoprocesseurs communicants. Un des enjeux
actuels est de proposer des noyaux exécutifs qui soient
aussi efficaces que PVM ou MPI tout en offrant davantage de
flexibilité et de réactivité.
L'approche qui réalise maintenant un consensus, est
d'étendre le modèle de réseau statique de processus lourds
communicants (PVM, MPI) à celui de réseau dynamique de
processus légers communicants et capables d'accéder à des
mémoires distantes. Proche du paradigme processus
communicants, cette méthode hérite des acquis de cette
approche (méthode de programmation, portabilité), tout en
offrant une efficacité supérieure. La dynamicité donne une
souplesse accrue dans le placement des données et calculs. En
effet, un point clef de la parallélisation est celui de la
localité, c'est-à-dire le rapprochement sur un couple
processeur-mémoire d'un couple calcul-donnée. La création
dynamique de processus léger à distance permet de faire de la
répartition dynamique de la charge de calcul.
Dans le contexte technologique
actuel, il est raisonnable de privilégier les architectures
de machines parallèles à mémoire distribuée, où les noeuds de
calculs sont eux-même des multiprocesseurs à mémoire commune
de type SMP
. Les temps d'accès
à la mémoire sont donc uniformes sur le même noeud, mais les
temps de latence des communications entre noeuds sont très
grands par rapport à ces temps d'accès à la mémoire.
Les noyaux exécutifs à base de processus légers
communicants [4] privilégient l'organisation d'un calcul
parallèle comme un réseau dynamique de processus communicants
où le placement des processus et des données est explicite.
Sur un même noeud, les processus coopèrent en partageant la
mémoire. Entre noeuds, ils communiquent par messages.
L'utilisation efficace de telles machines nécessite de
paralléliser les calculs et les communications c'est-à-dire
recouvrir les communications par des calculs. Le recours
systématique à des opérateurs de communication non bloquants
permet au programmeur d'assurer un meilleur recouvrement au
sein d'un même processus. La multiprogrammation légère permet
ensuite de pallier à des recouvrements imparfaits au sein des
processus. Une propriété essentielle d'un tel noyau est sa
réactivité face aux latences imprévisibles des
communications.
Un noyau exécutif se doit
d'être capable de s'adapter aux évolutions technologiques des
machines parallèles à mémoire distribuée. Actuellement, on
perçoit plusieurs axes d'évolution. Un premier axe concerne
l'accroissement d'efficacité des noeuds de calcul et des
réseaux d'interconnexion [5]. En
particulier, l'apparition de noeuds multiprocesseurs à
mémoire commune pose le problème de l'utilisation efficace de
ce parallélisme pour d'une part améliorer le potentiel de
calcul parallèle mais aussi le recouvrement
calcul-communication. Par ailleurs les réseaux à haut débit
et faible latence d'amorÇage nécessitent d'alléger en
proportion les noyaux de communication. Ces deux points sont
caractéristiques des grappes de nouvelle génération.
Un second axe concerne l'exploitation des technologies
d'accès direct à la mémoire distante. Certains constructeurs
(CRAY-SGI) offrent des infrastructures de ce type, mais on
trouve aussi des cartes sur le marché qui permettent
d'interconnecter des PC avec des réseaux à capacité
d'adressage selon la norme IEEE-SCI
. Cette nouvelle
architecture permet de faire de la communication entre
machines distantes avec «zéro» copie intermédiaire et donc
plus rapidement. Ces communications sont vues comme des
opérations de lecture et d'écriture.
Un troisième axe concerne la tendance à utiliser des
ensembles de machines hétérogènes via des réseaux locaux pour
disposer momentanément d'une puissance de calcul importante.
Les problèmes viennent alors de l'hétérogénéité des encodages
de données.