• Aucun résultat trouvé

Lorsque plusieurs communications intra-nœud ou inter-nœud utilisent simultanément une par-tie commune du chemin réseau, il se produit un partage de ressource exclusif (bus PCI) ou non-exclusif (lien full-duplex). De telles communications sont appelées des communications concur-rentes.

4.2.2 Communications concurrences : identification des points chauds

La concurrence entre communication intervient à deux niveaux.

Premièrement, dans des nœuds multiprocesseur, plusieurs tâchesMPIaccèdent aux bus reliant la mémoire à la carte réseau et à la carte réseau elle-même. Au niveau de la carte réseau, le composant partagé le plus pénalisant est le tampon mémoire (buffer) physiquement implanté sur la carte. Par exemple, lors de concurrence entre plusieurs communications émettant depuis un même nœud, la taille du tampon mémoire est généralement divisée proportionnellement entre les messages émis. La plupart des cartes réseaux comporte un tampon mémoire pour l’émission de données et un tampon mémoire pour la réception des données.

Deuxièmement, la concurrence produite par plusieurs communications s’effectue sur les com-posants réseaux externes au nœud. Les liens réseaux constituent le premier élément concerné par la concurrence. Cependant, l’accès au lien est régi soit par la carte réseau (communications sortantes) soit par le commutateur (communications entrantes). Le commutateur devient donc l’élément prin-cipal pour la gestion de la concurrence à l’extérieur des nœuds. Toutefois, nous avons vu dans le

Expérimentations 4.3 chapitre 2 que les commutateurs de réseaux haute performance, hors mis dans le cas deGigabit Ethernet, ont des fonctionnalités très réduites. Ainsi, le routage, le contrôle de flux, sont contrôlés et traités en amont du commutateur, c’est-à-dire au niveau des cartes réseaux. A l’inverse, dans le cas du réseauGigabit Ethernet, les fonctionnalités du commutateur ont une grande importance dans la gestion de la concurrence. En effet, le commutateur gère la répartition des accès aux liens réseaux.

En conclusion, dans le cas des réseaux haute performance, la carte réseau est le composant réseau principal qui gère la concurrence entre communications. Toutefois, pour le réseau Giga-bit Ethernet, les commutateurs interviennent aussi de manière significative dans la gestion de la concurrence.

En se basant sur ces premières constatations techniques, nous proposons dans la section sui-vante d’étudier de manière expérimentale les effets de la concurrence entre différentes commu-nications. Nous reviendrons dans le chapitre 6 sur l’importance des composants réseaux dans la gestion de la concurrence.

4.3 Expérimentations

Cette section a pour objectif d’étudier expérimentalement la concurrence entre communica-tions. Les effets de la concurrence dépendent du contexte expérimental, c’est-à-dire du nombre de communications en concurrence, des caractéristiques des communications (taille de message, date de départ), du type de réseau ou encore du choix de l’implantationMPI. Devant ce nombre important de paramètres, nous choisissons une approche progressive dans laquelle les contextes expérimentaux augmentent progressivement en complexité (nombre de communications). De plus, nous analyserons, en parallèle, la concurrence entre communications pour trois implantationsMPI (deux implantations libres et une implantation propriétaire) et trois réseaux.

Dans la première partie, nous établirons le protocole expérimental, en spécifiant l’objectif des expérimentations et les outils utilisés pour l’obtention des résultats de performance. Dans une seconde partie, nous commenterons les résultats d’expériences introductives. Nous précise-rons la notion de conflits réseaux en décrivant différentes formes élémentaires d’expression de la concurrence entre communications. Dans cette partie, nous proposerons une simplification de la présentation des résultats expérimentaux, afin, dans une troisième partie, d’analyser plus aisément des expériences complexes. Finalement, dans une dernière partie, nous synthétiserons les diffé-rents résultats expérimentaux. A noter que nous présentons dans le cas du réseauGigabit Ethernet uniquement des expériences réalisées avec l’implantationMpich. Cependant, la même série d’ex-périences réalisées avec l’implantationLam/MPIest accessible dans l’annexe B.

4.3.1 Protocole expérimental

Le protocole expérimental permet de décrire les objectifs expérimentaux et d’établir le contexte des expériences.

Le but principal des expériences réalisées est l’étude des effets de la concurrence sur les temps de communication. Il s’agit donc d’étudier la variabilité des temps de communication induite par la concurrence. Nous appelons pénalité le rapport entre le temps d’une communication soumise à aucune concurrence avec les temps de communications soumises, quant à elles, à un contexte concurrent. En outre, cette étude s’applique à toutes tailles de messages. Il s’agit donc d’étudier à la fois la latence et la bande passante. Les résultats obtenus sont présentés suivant deux supports. Le premier support, sous forme de graphe à l’échelle logarithmique et de tableaux de valeurs, décrit en détails les temps de communications de contextes concurrents simples. Dans le cas d’ex-périences complexes, faisant intervenir plusieurs nœuds et communications, un deuxième support de présentation, moins détaillé, est proposé. Ce support consiste à la représentation graphique de contextes concurrents accompagnés des pénalités associées à chaque communication.

Le contexte expérimental se base sur plusieurs paramètres. Grappes de calcul

Les grappes de calcul, utilisées dans les expérimentations suivantes, comportent trois types de réseau et deux types de nœuds. Les grappes considérées sont : la grappe Rennes pour le réseau Gigabit Ethernet, la grappe Sophia pour le réseauMyrinet et enfin la grappeTeratec pour le ré-seauQuadrics. Les deux premières grappes sont constituées de nœuds biprocesseur Opteron. La grappeTerateccontient des nœuds à 16 processeurs Itanium 2, nœudsBull Novascale, et un réseau Quadrics.

Le lecteur trouvera plus de précisions sur les grappes de calcul employées dans l’annexe A.

ImplantationMPI

Suivant la grappe de calcul, nous utiliserons une ou plusieurs implantationsMPI. Les implan-tations utilisées sur le réseauGigabit Ethernet, c’est-à-dire la grappe Rennes, sontMpich1.2.6 et Lam/MPI7.1.1. L’implantation employée sur la grappe Sophia, comportant un réseauMyrinet, est une implantationMpich1.2.6 associée à une version 1.1.3 du protocole MX. Cette implantation MPIest fournie par la sociétéMyricom. Finalement, une implantation industrielle fournie parBull, sera utilisée sur la grappeTeratec. La version de cette implantation estMPI Bull1.6.4.

Programme test

Afin de générer des communications concurrentes, nous utiliserons le même programme MPI sur chacune des grappes. L’objectif de ce programme est d’exprimer la variation d’un indice de performance : le temps de chaque communication en concurrence. Ce programme consiste en un envoi simple de données utilisant les méthodes bloquantesMPI_SendetMPI_Recv. Il permet l’exécution répétée de plusieurs schémas de communications concurrentes. Il est possible de para-métrer, le nombre de communications, la taille des données de chaque communication, leurs dates de départ, ainsi que le nombre de tests à répéter. Les résultats obtenus sont des indices statistiques, comme par exemple la moyenne ou la médiane, sur un échantillon de 1000 temps de communica-tion. Afin d’obtenir des mesures précises, les différents délais ou mesures de temps sont réalisés en

Expérimentations 4.3 accédant aux compteurs matériels des processeurs. La description du code de ce programme test est détaillée dans la figure 4.3. Notons que, suivant l’implantationMPI, lors de message de petite taille, la mesure proposée n’est pas la latence réseau. En effet, pour des messages de petites tailles, ce temps correspond à la copie du message dans un tampon mémoire défini par l’implantation MPI.

Placement des tâchesMPI

Chaque expérience comporte plusieurs tâchesMPI, ce nombre est égal au double du nombre de communications de l’expérience. En effet, nous établirons un état unique pour chaque tâche, c’est-à-dire qu’une tâche peut soit recevoir soit émettre des données sans avoir la possibilité de changer d’état au cours du temps. De plus, chaque processeur exécute une seule tâcheMPI qui sera placée sur ce processeur en fixant l’affinité de l’ordonnanceur système.

Le placement des tâches sur les nœuds est un paramètre variable, ce placement sera évalué au niveau de l’implantationMPI(à l’exception de l’implantationMPI Bullqui ne permet pas un placement fin, dans ce cas, le placement sera un paramètre supplémentaire du programme test). Le numéro du processeur sur laquelle une tâche sera figée est lui un paramètre du programme de tests. En outre, le nœud à partir duquel est lancé l’expérimentation ne fait pas partie des nœuds impliqués dans les communications.

Résumé des paramètres expérimentaux variables

Pour résumer, lors des expériences, les paramètres variables sont : – L’implantationMPIet la grappe de calcul ;

– Le placement des tâches sur les nœuds de la grappe ;

– Les paramètres des communications concurrentes : nombres, taille, date de départ.

Les résultats obtenus expriment le temps additionnel causé par la concurrence des communica-tions.

4.3.2 Expérimentations introductives

Nous choisissons de suivre une approche incrémentale dans la suite des expériences. De ce fait, les premières expériences sont réalisées avec simplement deux communications en concur-rence. Chacune de ces communications a la même quantité de donnée à transférer et débute au même instant. Nous appellerons conflit un ensemble de communications en concurrence. La com-plexité d’un conflit dépend du nombre de nœuds et du nombre de communications en concurrence. Les premières expériences réalisées comportent un nombre limité de nœuds et de communication mises en concurrence. De telles expériences correspondent à l’étude de conflits simples, ou conflits élémentaires.

4.3.2.1 Description des conflits simples

Nous présentons quatre conflits simples, faisant intervenir deux communications. Dans la fi-gure 4.4, les quatre conflits se décrivent comme suit :

; Parameters in:

; nb_test : integer // nombre de tests

; nb_pro : integer // nombre de tâches

; size : array of nb_pro*integer // taille des communications

; delay : array of nb_pro*integer // date de départ des communications

;

; Parameters out:

; // résultats statistiques

; median, average : double

; standard deviation, absolute deviation : double

; minimum, maximum : double

; quartile : array of 4*double

if (process_rank % 2 == 0) { // tâche paire correspondante à une émission

repeat 5 times { // éviter l’influence du cache

MPI_Send (process_rank+1, size[process_rank]) }

MPI_Barrier

repeat nb_test times { // Mesures

wait delay[process_rank] start timer MPI_Send (process_rank+1,size[process_rank]) stop timer MPI_Barrier }

} else { // tâche impair correspondante à une réception

repeat 5 times { // éviter l’influence du cache

MPI_Recv (process_rank-1, size[process_rank]) }

MPI_Barrier

repeat nb_test times { // Mesures

MPI_Recv (process_rank-1,size[process_rank]) MPI_Barrier

} }

Fin du code