Chapitre2c
Transcription
Chapitre2c
Communication ou acheminement des messages Robert Bergevin (c) [Varma] figure 4 Figure 2.63 Conflits dans une maille 2D C’est donc normalement un routage réparti i.e. que les décisions sur l’acheminement du message ou paquet se prennent à chaque noeud. Le routage adaptatif consiste à calculer, à chaque noeud, une fonction de routage (détermination des directions possibles à partir de ce noeud) et une fonction de sélection (choix de la meilleure direction parmi celles identifiées). L’importance du routage adaptatif est plus évidente lorsque l’on utilise une commutation par paquets et un contrôle du flot de données de type WR. La raison en est que les paquets sont souvent distribués sur plusieurs noeuds ce qui augmente les chances de conflit, blocage et impasse entre les messages. Le routage adaptatif est aussi important considérant que des éléments du réseau peuvent tomber en faute i.e. devenir non fonctionnels. Il est cependant plus complexe ce qui peut ralentir la transmission des messages dans le réseau. Nous considérons principalement, dans la suite, les communications point-à-point. 2.18.7.1 Algorithmes de routage adaptatif Les algorithmes de routage adaptatifs se divisent aussi en plusieurs catégories, selon que: • • • le chemin recherché est le plus court (“minimal routing”) ou non (“nonminimal routing”). tous les chemins possibles sont considérés (“fully adaptative”) ou seulement un sous-ensemble des chemins possibles (“partially adaptative”). la recherche de chemin accepte les retours en arrière (“non-progressive” ou “backtracking”) ou non (“progressive”). GIF-3003 Systèmes parallèles et temps réel 126 Communication ou acheminement des messages Robert Bergevin (c) [Varma] figure 5 Figure 2.64 Taxonomie du routage adaptatif 2.18.7.2 Évitement des impasses sur une maille Deux méthodes de routage adaptatif similaires, permettant d’éviter les impasses, ont été proposées pour les réseaux en maille et pour les réseaux hypercube. Ce sont des algorithmes basés sur le modèle des changements de direction. Dans les deux cas, on utilise un routage partiellement adaptatif, progressif, avec un canal virtuel dans chaque sens (correspondant, par exemple, à un lien bidirectionnel physique entre deux noeuds mais qui ne peut être utilisé dans les deux sens simultanément). Dans le cas des réseaux en maille 2-D, nous avons vu qu’une impasse peut se produire lorsque quatre messages transitent sur un groupe de 4 noeuds voisins, chacun le long d’un chemin nécessitant un changement de direction à l’intérieur de ces quatre noeuds et le tout formant un cycle. Dans une maille 2-D, il y a quatre directions de sortie possibles qu’un message peut prendre à un noeud donné. Nous les identifions par les directions géographiques: N, S, E, W. En tout, il y a donc huit changements de direction (ou dimension) possibles que l’on peut regrouper en deux groupes cycliques: WN, NE, ES et SW pour un cycle horaire et NW, WS, SE et EN pour un cycle anti-horaire. E E W W N S S N N S S N W W E E Figure 2.65 Deux groupes cycliques de changements de direction GIF-3003 Systèmes parallèles et temps réel 127 Communication ou acheminement des messages Robert Bergevin (c) Ainsi, en empêchant un ou plusieurs changements de direction dans chaque groupe, on peut éviter les impasses. L’algorithme de routage fixe XY empêche deux changements par cycle car il ne permet que d’aller d’une direction X (horizontale) à une direction Y (verticale) mais non l’inverse. Soit X positif dans la direction E et Y positif dans la direction N. Dans le cycle horaire, cet algorithme permet donc seulement les changements ES et WN. Dans le cycle anti-horaire, il permet les changements EN et WS. L’algorithme XY est fixe car il ne permet qu’un seul chemin entre deux noeuds. En empêchant moins de changements par cycle, on obtient un algorithme adaptatif qui peut aussi éviter les impasses. Il y a 16 façons différentes d’enlever un seul changement par cycle. Parmi celles-ci, il s’avère que seulement 12 permettent d’éviter les impasses. Par exemple, si on empêche NW dans le cycle anti-horaire, on se retrouve avec un chemin équivalent à un changement WN dans le cycle horaire. Donc, en empêchant WN dans le cycle horaire, on pourra quand même faire un cycle avec les 6 changements de direction qui restent. Cette paire n’élimine donc pas les impasses. Cependant, seulement 3 façons d’enlever un changement de direction sont uniques si on élimine les symétries. Par exemple, on élimine les inversions des axes X et/ou Y qui donnent le même chemin en partant le long de l’axe positif plutôt que le long de l’axe négatif. Elles correspondent à trois algorithmes adaptatifs uniques: • • • “west-first”: empêche NW et SW. “north-last”: empêche NW et NE. “negative-first”: empêche NW et ES. Un algorithme symétrique à “negative-first” serait “positive-first” qui empêcherait WN et SE. Pour les trois algorithmes uniques ci-dessus, les cycles et les impasses sont impossibles. Par exemple, avec l’algorithme “negative-first” on se déplace d’abord dans les directions négatives seulement (S et W), dans une première phase, puis dans les directions positives seulement (N et E), dans une deuxième phase. On élimine ainsi les cycles car empêcher NW est équivalent à permettre WN, ce qui laisse un trou dans le cycle horaire par l’élimination de ES (et un trou dans le cycle anti-horaire car empêcher ES équivaut à permettre SE). L’algorithme “negative-first” élimine donc les impasses. GIF-3003 Systèmes parallèles et temps réel 128 Communication ou acheminement des messages Robert Bergevin (c) Avec ces algorithmes adaptatifs, on obtient plusieurs chemins possibles pour aller d’un noeud source à un noeud destination (e.g. de 4 à 10 dans la figure ci-dessous), et ce sans risque de créer d’impasse. [Varma] figures 13 et 14 Figure 2.66 Routage adaptatif “negative first On peut généraliser ces algorithmes pour les mailles à n dimensions. Dans ce cas, il y a n ( n – 1 ) cycles distincts, chacun étant aussi formé de changements de direction de 90 degrés. Par exemple, pour n = 3 il y aura 6 cycles. 2.18.7.3 Algorithme adaptatif pour hypercube: P-cube Nous savons déjà qu’un hypercube est une maille d – D avec deux noeuds par dimension. Un algorithme semblable aux précédents existe donc pour les réseaux hypercube binaires. On l’appelle l’algorithme de routage P-cube. Les dimensions dans lesquelles on doit se déplacer pour aller de la source à la destination (voir algorithme E-cube) sont d’abord divisées en 2 groupes: les sauts négatifs (“negative hops”) et les sauts positifs (“positive hops”). Le premier groupe comprend les dimensions pour lesquelles la source a un bit 1 dans cette dimension et la destination un bit 0. Le deuxième groupe comprend les dimensions dans la situation opposée (source: 0 et destination:1). Il y a en fait deux versions de l’algorithme P-cube. Pour la version minimale, on se déplace, dans la première phase, le long des sauts négatifs (premier groupe) seulement et, dans la second phase, le long des sauts positifs seulement (deuxième groupe). Pour la version non-minimale, on accepte aussi, dans la première phase, des déplacements dans une dimension pour laquelle la source et la destination sont à 1. On crée ainsi des détours sur le chemin entre la source et la destination, tout en conservant la séquence de sauts négatifs suivis de sauts positifs. Chaque détour dans une dimension augmente la longueur du chemin de 2 (aller-retour). GIF-3003 Systèmes parallèles et temps réel 129 Communication ou acheminement des messages Robert Bergevin (c) On peut numéroter les canaux d’un hypercube de sorte qu’un chemin respectant l’algorithme P-cube suivra toujours des canaux de numéros croissants. [Varma] figures 15 Figure 2.67 Routage adaptatif P-cube Avec l’algorithme P-cube, pour aller de 101 à 010 dans un hypercube 3-D, on pourra suivre un de deux chemins possibles: 101, 100, 000, 010 ou 101, 001, 000, 010. Si on était parti de 111, on aurait pu aller vers un de ces deux chemins dans le cas non-minimal. Dans le cas minimal, on aurait plutôt suivi 111, 110, 010 ou 111, 011, 010. Voyons maintenant pourquoi les impasses sont impossibles. Dans la première phase de l’algorithme P-cube on ne peut former de cycle car on se déplace toujours vers un noeud qui a une adresse inférieure ou égale. On ne peut donc pas revenir à notre point de départ. Dans la seconde phase, c’est la même situation car on se déplace toujours vers un noeud qui a une adresse supérieure. Finalement, comme chaque dimension est traitée dans une seule phase, on ne peut jamais revenir sur nos pas entre les deux phases. Ainsi, il ne peut pas y avoir de cycle ou d’impasse avec cet algorithme. Par contre, dans ce cas comme dans le cas des mailles n-D, les algorithmes permettant d’éviter les impasses peuvent ne plus être effectifs en présence de fautes dans le réseau. Des algorithmes particuliers sont développés pour faire face à ces situations. Ils dépassent le cadre de ce cours. 2.18.7.4 Algorithmes complètement adaptatifs D’autres algorithmes de routage adaptatifs considèrent tous les chemins possibles. Ils sont généralement basés sur l’utilisation de canaux virtuels. Leur description dépasse le cadre de ce cours. 2.18.8 Exercices à faire Q2.72 à Q2.79. GIF-3003 Systèmes parallèles et temps réel 130 Les réseaux dynamiques ou configurables 2.19 Robert Bergevin (c) Les réseaux dynamiques ou configurables Comme nous l’avons mentionné, les réseaux statiques sont appropriés pour les applications structurées dans lesquelles les patrons de communication sont fixes et prévisibles. En effet, dans ce cas, les liens fixes entre les processeurs, même incomplets, peuvent être exploités optimalement par un algorithme de routage prédéterminé. Dans tous les autres cas, le fait d’avoir un réseau fixe peut être désavantageux. Par exemple, pour des applications non-structurées il serait plus intéressant d’avoir un réseau adaptable aux besoins dynamiques en communications. Pour ce faire, les noeuds de calcul ne doivent plus être reliés de façon permanente. Il est en effet difficile d’obtenir, au niveau matériel, un ordinateur parallèle universel (“multipurpose” ou “general purpose”) avec un réseau d’interconnexion fixe autre que celui de connexité totale. La topologie hypercube, quoique très versatile comme nous l’avons vu, n’est pas toujours applicable car la dimension du réseau est limitée par des considérations pratiques. Lorsque les communications sont variées et que les contraintes de l’application demandent de la flexibilité (e.g. contraintes temporelles variables sur différents processus), un réseau statique n’est donc plus la solution idéale. Un réseau statique a un routeur ou commutateur par noeud. Dans un réseau dynamique, il y a plutôt un “commutateur global” (réseau de commutation formé de plusieurs commutateurs) liant les différents processeurs, ce qui permet de configurer de façon dynamique les liens directs entre les processeurs i.e. la topologie du réseau. Après que les commutateurs du réseau de commutation aient été activés, un ou plusieurs liens directs existent entre les noeuds. L’activation des commutateurs correspond donc, à la fois, à la formation d’un réseau adapté à la communication désirée et au routage du ou des messages. Un ordinateur parallèle doté d’un réseau dynamique et pouvant servir plusieurs applications simultanément demanderait un protocole complexe, découplé entre les niveaux physique et logique, pour le routage des messages de chacune des applications. On n’a qu’à penser aux protocoles des réseaux informatiques locaux (Ethernet) ou globaux (Internet). Par contre, lorsque le système est dédié à une seule application, structurée ou non, le protocole est plus simple et typiquement étroitement couplé entre le matériel et le logiciel. C’est le cas qui nous intéresse avec les SPTR. 2.19.1 Trois types de réseaux dynamiques Les types de réseaux dynamiques sont, par ordre croissant de coût et de performance: • • • les réseaux en bus; les réseaux de commutation multi-étages (“multistage”); les réseaux de commutation matriciels (“crossbar”). GIF-3003 Systèmes parallèles et temps réel 131 Les réseaux dynamiques ou configurables Robert Bergevin (c) [Almasi] figure chap. 8 Figure 2.68 Topologies de réseaux dynamiques Ces trois topologies particulières ont des propriétés intéressantes en terme de flexibilité et de facilité de routage. 2.19.2 Réseaux en bus Le réseau en bus permet d’établir dynamiquement un et un seul lien direct à la fois entre n’importe quelle paire de noeuds source et destination. Dans ce type de réseau, le sens de la communication (source vers destination) est déterminé par le protocole physique et logique de gestion du bus. On peut donc dire que le réseau en bus permet d’activer uniquement les commutateurs liant deux noeuds au bus de communication partagé, ceci pour une communication point-à-point. La gestion du bus pour une communication collective est plus complexe. Les réseaux en bus fonctionnent bien, dans un mode 1:1, tant que le nombre de noeuds est limité et que les communications sont bien réparties dans le temps. Plus le nombre de noeuds augmente, plus la largeur de bande disponible par noeud diminue. De plus, ce type de réseau d’interconnexion n’est pas du tout robuste face aux pannes ou défaillances. GIF-3003 Systèmes parallèles et temps réel 132 Les réseaux dynamiques ou configurables Robert Bergevin (c) Le bus demeure quand même un type de réseau très utilisé dans les systèmes en temps réel actuels, en particulier ceux dont la complexité (nombre de données traitées, type et quantité de communications, etc.) est limitée. Il existe plusieurs bus normalisés et de nouveaux bus encore plus performants sont proposés régulièrement, suivant ainsi l’avancement de la technologie des microprocesseurs, en particulier en ce qui a trait aux systèmes parallèles. En effet, l’utilisation d’un système multiprocesseur sur bus semble toute indiquée pour les SPTR. Elle donne une plus grande capacité de traitement et elle rend possible une meilleure tolérance aux fautes, par sa redondance intrinsèque. De plus, elle représente une évolution naturelle par rapport aux systèmes monoprocesseur existants. 2.19.2.1 Problèmes possibles En fait, lorsque la complexité du traitement à réaliser est limitée i.e. lorsque le nombre d’éléments du système est moyen et que le taux d’utilisation du bus par ces éléments n’est pas trop élevé, un réseau en bus ne pose pas de problèmes particuliers tout en étant simple et relativement peu coûteux. Par contre, lorsque les contraintes sont plus exigeantes et donc que le nombre d’éléments (e.g. processeurs) augmente ainsi que leur taux d’utilisation du bus, il se produit un problème de goulot (“bottleneck”). Celui-ci résulte du fait que seulement deux éléments peuvent communiquer entre eux à chaque instant. De plus, une défaillance du bus (“failure”) est toujours catastrophique car alors, aucune communication n’est possible entre les éléments du système. 2.19.2.2 Bus multiples L’utilisation de bus multiples en parallèle pourrait solutionner partiellement ce problème. Malheureusement, ceci n’est pas possible facilement car il faut alors utiliser des processeurs et des mémoires à plusieurs ports, ce qui est difficilement réalisable à un coût raisonnable et qui, de plus, implique une gestion des modules qui devient rapidement plus complexe. [Tabak] figure 2.2 Figure 2.69 Bus multiples en parallèle GIF-3003 Systèmes parallèles et temps réel 133 Les réseaux dynamiques ou configurables Robert Bergevin (c) 2.19.2.3 Liens directs ou indirects Il devient alors plus avantageux d’utiliser soit des liens de communication directs (point-à-point) entre les processeurs avec des circuits spécialisés pour gérer les communications, c’est ce que nous avons vu avec les réseaux statiques et les routeurs, ou des liens indirects activés par des commutateurs, donc des réseaux dynamiques plus complexes et flexibles. 2.19.3 Réseaux de commutation matriciels Un réseau dynamique beaucoup plus flexible et performant est le réseau de commutation matriciel (“crossbar”). Celui-ci permet de relier simultanément n’importe quelle paire de noeuds inoccupés après un délai de commutation fixe et indépendant du nombre de noeuds dans le réseau. La communication la plus simple qui peut être réalisé sur ce réseau est la permutation (n:n) auquel cas toutes les sources et destinations sont uniques. Des protocoles plus complexes permettent de gérer assez facilement des communications 1:n ou n:1. Avec ce réseau, le nombre de liens par noeud reste limité (2 par processeur) mais le nombre de commutateurs ( N 2 ) est aussi élevé que le nombre de liens d’un réseau statique de connexité totale. Ce nombre peut être excessif lorsque le réseau est de grande dimension. [Kumar] figure 2.6 Figure 2.70 Réseau de commutation matriciel En pratique, avec la technologie actuelle, l’utilisation de ce type de réseau est limitée à des systèmes ayant autour de 100 noeuds ou processeurs. Ce nombre augmente constamment avec les progrès de la micro-électronique. Parfois, on utilise aussi des commutateurs avec un nombre limité d’entrées et de sorties et qui ne peuvent donc que relier un nombre limité de processeurs entre eux; à plus forte raison lorsque chaque processeur a plusieurs liens de communication. Dans les circuits de routage rapides, on utilise un commutateur matriciel pour relier les tampons des canaux d’entrée aux tampons des canaux de sortie Des commutateurs optiques ont aussi été développés pour ce type de réseau. GIF-3003 Systèmes parallèles et temps réel 134 Les réseaux dynamiques ou configurables Robert Bergevin (c) Un des problèmes qui demeure est la gestion de la complexité de l’arbitrage des requêtes et du contrôle du commutateur. Des contrôleurs distribués ont été proposés pour faire face à cette complexité et pour assurer une certaine robustesse au réseau. Les réseaux en bus et de commutation matricielle forment, avec les réseaux statiques, l’ensemble des réseaux mono-étage (“single-stage”) pour lesquels on a seulement des connexions directes (un ou plusieurs liens 1:1 permanents, avec routeur, ou temporaires, avec un commutateur à deux états). Le degré des noeuds est fixe entre les PE des réseaux mono-étage. [Lawson] figure 3.27 Figure 2.71 Réseaux mono-étage Lorsque la connexité permanente ou temporaire est incomplète, la transmission entre une source et une destination données peut se faire en plusieurs étapes (passes ou itérations). Le dernier type de réseau dynamique mentionné, les réseaux de commutation multi-étages, sont un intermédiaire pratique entre les réseaux en bus (qui permettent les communications 1:1) et les commutateurs matriciels (qui permettent toutes les communications n:n). Ces réseaux largement utilisés permettent, selon leur configuration, un sous-ensemble particulier des communications n:n. Nous les examinons en détail dans la section qui suit. 2.19.4 Réseaux de commutation multi-étages Un réseau de commutation multi-étage (MIN: “multi-stage interconnection network”) comprend plusieurs colonnes de commutateurs qui sont reliés entre eux et avec les noeuds de calcul. Il se situe entre la connexité minimale des réseaux en bus et la connexité maximale des réseaux de commutation matricielle. Certains chemins entre des paires de noeuds auront donc des parties communes. Il peut donc y avoir conflit et attente. GIF-3003 Systèmes parallèles et temps réel 135 Les réseaux dynamiques ou configurables Robert Bergevin (c) Lorsque n’importe quel noeud d’entrée (source) peut atteindre n’importe quel noeud de sortie (destination) en une seule passe dans le réseau (pour un seul message i.e. communication 1:1), on parle d’un réseau avec accès total (FA: “full access”). Les réseaux de commutation matricielle sont FA. 2.19.4.1 Topologie des réseaux MIN Un grand nombre de réseaux MIN NXN (de N processeurs d’entrée vers N processeurs ou vers N mémoires de sortie) sont formés de n = log2N colonnes ayant chacune N/2 commutateurs 2x2 i.e. avec 2 entrées et 2 sorties. Le nombre total de commutateurs est donc d’ordre Nlog2N, comparativement à N2 pour les commutateurs matriciels. On représente normalement un tel réseau MIN par une matrice de n colonnes de N/2 commutateurs (rangées) reliant les N noeuds d’entrée (source) placés à gauche de la première colonne aux N noeuds de sortie (destination) placés à droite de la dernière colonne. On numérote normalement les colonnes de commutateurs de 0 à n-1 en allant de la première (à gauche) à la dernière (à droite). Un étage d’un réseau MIN comprend une colonne de commutateurs et les liens d’entrée de ces commutateurs. Le numéro d’un étage est le même que celui de la colonne de commutateurs. Un réseau MIN comprend donc n étages suivis des liens de sortie de la dernière colonne de commutateurs. La topologie des réseaux MIN est définie par la façon dont sont agencés les liens à chaque étage et à la sortie. 2.19.4.2 Construction d’un réseau MIN Une permutation est une application (“mapping”) biunivoque N:N où chacun des N éléments d’entrée (source) est relié à un et un seul des N éléments de sortie (destination) et réciproquement. En assignant à chaque élément d’entrée et de sortie une étiquette ou adresse entre 0 et N-1, la permutation peut être définie par une modification de l’adresse de chaque élément d’entrée pour produire l’adresse de l’élément de sortie correspondant. En général, on utilise une adresse binaire et la permutation correspond à une opération sur les bits formant l’adresse. Dans un réseau MIN, les liens à chaque étage et à la sortie sont agencés en fonction d’une permutation parmi plusieurs types standards. 2.19.4.3 Types de permutations Plusieurs types de permutations standards sont utilisées pour construire les MIN: • • cube i-ème (“ith cube”): complémente le i-ème bit (LSB = bit 0); échange (“exchange”): cube 0; GIF-3003 Systèmes parallèles et temps réel 136 Les réseaux dynamiques ou configurables • • • • • • Robert Bergevin (c) décalage (“shift”): déplace des bits vers la gauche ou la droite; mélange parfait (“perfect-shuffle”): décalage cyclique de tous les bits de 1 position vers la gauche; ligne de base i-ème (“ith baseline”): décalage cyclique des i+1 bits les moins significatifs de 1 position vers la droite; papillon i-ème (“ith butterfly”): échange le bit 0 et le i-ème bit; inversion des bits (“bit reversal”): inverse tous les bits; identité (“identity”): papillon 0. [Lawson] figure 3.25 Figure 2.72 Permutation mélange parfait Étude Trouver une explication de l’appellation mélange parfait pour la permutation ci-dessus. 2.19.4.4 Perfect-shuffle et shuffle-exchange Dans une permutation perfect-shuffle de N = 2n noeuds, chaque noeud est donc relié au noeud obtenu par un décalage cyclique de 1 bit vers la gauche, de son adresse binaire. Un étage de type mélange et échange (“shuffle/exchange”) consiste en une permutation perfectshuffle suivi d’une colonne de commutateurs 2x2. Cette colonne de commutateurs permet de réaliser la permutation d’échange. GIF-3003 Systèmes parallèles et temps réel 137 Les réseaux dynamiques ou configurables Robert Bergevin (c) [Varma] figure 1 Figure 2.73 Étage mélange et échange 2.19.4.5 Réseau oméga Le réseau oméga est un exemple important de réseau multi-étage de type “shuffle/exchange”. Il est formé d’une suite d’étages de type shuffle/exchange terminée par une permutation identité. Il permet d’obtenir une approximation de la connexité et du débit d’un réseau de commutation matriciel mais à un coût moindre. Le réseau oméga de base est FA. Il permet de relier chaque paire de noeuds en une seule passe. De plus, il existe un chemin unique permettant de relier la paire de noeuds. Dans le réseau oméga, le mélange est réalisé par des liens et l’échange par des commutateurs. 2.19.4.5.1 Autres réseaux similaires Plusieurs autres réseaux MIN sont construits de façon similaire. Un réseau MIN baseline de n étages utilise une permutation mélange parfait à l’entrée du premier étage (étage 0), une permutation ligne de base (n-i)-ème à l’entrée des étages i=1 à n-1 et une permutation identité à la sortie. Un réseau MIN butterfly de n étages utilise une permutation papillon i-ème à l’entrée des étages i=0 à n-1 et une permutation identité à la sortie. Un réseau MIN cube de n étages utilise une permutation mélange parfait à l’entrée du premier étage (étage 0), une permutation papillon (n-i)-ème à l’entrée des étages i=1 à n-1 et une permutation identité à la sortie. GIF-3003 Systèmes parallèles et temps réel 138