![]()
Précédent : Algorithmique parallèle, complexité et
ordonnancement Remonter : Fondements scientifiques
Suivant : Interface de programmation parallèle
et
Mots clés : modèles de programmation, environnement d'exécution, processus légers, communication par message, accès de mémoire à distance, ordonnancement .
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, dans son aptitude à supporter différentes pratiques ou modèles de parallélisation.
Une 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. L'intérêt de cette méthode est qu'elle est proche du paradigme processus communicants, et donc qu'elle peut hériter des avantages de cette approche (portabilité et efficacité). Un autre avantage est qu'elle offre une boîte à outil riche pour gérer données et calcul. En effet, un concept fondamental du parallélisme est celui de la localité, c'est-à-dire le rapprochement sur un couple processeur-mémoire d'un couple calcul-donnée. Faire de la répartition dynamique de la charge de calcul sur un modèle de processus communicants implique de faire de la migration de processus lourd. Dans un contexte de calcul haute performance, cette technique s'avère trop coûteuse.
Dans le contexte technologique actuel, il parait 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 [[3]] 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. 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 [[4]]. 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.
Un second 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 architectures et de la latence importante des réseaux locaux.
Un troisième 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
. Dans ce contexte, il s'agit
de savoir exploiter cette nouvelle architecture qui 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.
Les fonctions de base d'une telle machine virtuelle permettent, d'une part, d'exprimer facilement un programme parallèle soit comme un réseau dynamique de processus communicants, soit comme un graphe de tâches et, d'autre part, de décrire des structures complexes de données. Ces deux volets sont exploités par des interfaces de programmation de type différents et les cibles sont nombreuses : programmation scientifique en Fortran, programmation parallèle objet, programmation parallèle utilisant des ``frameworks'', environnement de calcul spécifique (e.g. calcul formel), programmation logique, etc.