d'un autre processeur. Durant ce traitement ou cette attente, le processeur n'est pas à la disposition
de l'application et donc du calcul.
•La latence et le débit du réseau de communication sont aussi des points importants. La latence est
le temps nécessaire pour envoyer un message de taille minimal (0 octet) sur le réseau, le débit est la
quantité de données que le réseau peut transmettre par unité de temps. C'est de ces deux
paramètres que va dépendre la vitesse des communications (si on ne tient pas compte du traitement
du message par le système d'exploitation). Il est en général préférable de ne pas envoyer beaucoup
de petits messages, en effet chaque envoi nécessite un temps de traitement minimum qui n'est plus
négligeable par rapport au temps nécessaire à l'émission de petits messages. Pour remédier à cela,
on peut, par exemple, regrouper les petits messages pour limiter cet effet en formant un message de
taille plus importante.
•Les communications peuvent être synchrones ou non, bloquantes ou non. Les communications
synchrones sont plus lentes et sont généralement bloquantes, c'est à dire que les deux processeurs
engagés dans la communication doivent attendre la fin de la communication pour continuer. Par
contre les communications asynchrones sont la plupart du temps non bloquantes. Quand un
processeur veut envoyer un message à un autre, il envoie le message et peut immédiatement
reprendre le cours de son exécution sans se soucier de quand l'autre processeur recevra le
message. C'est là le principal avantage des communications asynchrones.
Les synchronisations
Il existe différents types de synchronisations :
•Les barrières impliquent l'ensemble des tâches de l'application. Pour passer une barrière, il faut que
toutes les tâches de l'application aient atteint cette barrière.
•Les verrous et sémaphores impliquent un nombre quelconque de tâches. Ils sont utilisés
principalement pour protéger une donnée ou une section critique du code. Lorsqu'une tâche obtient
le verrou, le système doit garantir qu'elle est la seule à l'avoir et qu'elle peut, en toute sécurité,
accéder à la donnée ou rentrer dans la section critique. Les autres tâches cherchant à obtenir ce
verrou pendant ce temps seront bloquées en attente du verrou.
•Les communications synchrones peuvent aussi jouer le rôle d'élément de synchronisation.
La dépendance des données
Il y a dépendance entre deux parties d'une application lorsque l'exécution de l'une affecte le résultat de
l'autre. Une dépendance de donnée entraîne une utilisation de la valeur d'une même variable par des
tâches différentes. Ces dépendances sont très importantes en ce qui concerne les applications parallèles
puisque c'est l'un des principaux freins au développement d'applications parallèles.
Ces dépendances peuvent être gérées soient par la communication des données entre les processeurs
lors de points de synchronisation (dans le cas de mémoires distribuées) soit par la synchronisation des
lectures / écritures (dans le cas de mémoires partagées).
La répartition de charge
Le but de la répartition de charge est d'utiliser au maximum les ressources disponibles. Dans le cas idéal,
toutes les tâches sont occupées en permanence.
Cette répartition des tâches joue également un rôle important dans les performances globales du
système. Surtout dans le cas où il nécessaire de mettre en place des synchronisations, en effet, c'est la
tâche la plus lente qui va déterminer la performance de l'ensemble, les tâches les plus rapides devant
attendre les plus lentes.
Cette répartition peut être statique si la vitesse des processeurs et le temps de calcul sont connus. Mais,
dans le cas contraire, on peut mettre en place une répartition dynamique, par exemple les tâches, qui une
fois qu'elles ont fini leurs traitements, viennent demander de nouvelles données.
La granularité
La granularité représente le volume de traitement qui il y a entre deux communications (ou
synchronisations). C'est une mesure qualitative du ratio entre le volume de calcul et le volume des
communications.
Une granularité faible signifie que les périodes de calcul sont relativement courtes par rapport au période
Conception d'un système à haute performance - Le calcul parallèle 5/6 Copyright © CETMEF 2004