• Aucun résultat trouvé

L’algorithme de simulation parallèle

I.3. Algorithme parallélisé de simulation

I.3.2. L’algorithme de simulation parallèle

Le masque de calcul correspondant à la chambre réverbérante bidimensionnelle de dimensions 3,105m×2,475m sera réparti sur 8 processus. En effet, la surface globale de la chambre sera divisée en 8 petites surfaces adjacentes de dimensions 388,125mm × 2475 mm chacune, et un processus sera affecté pour le calcul des valeurs du champ électromagnétique correspondant respectivement à chacune de ces surfaces (cf. Figure I.14).

Processeur P0 Processeur P1

Message envoyé du P0 à Pk-1

Communicateur MPI_COMM_WORLD

Processeur P2

Processeur Pk-1

Figure I.13 – Communication point à point entre deux processus.

Volume de travail

2,475 m

x y

3,105 m

Processus P0 Processus P1 Processus Pk-1

L’utilisation des communications entre les processus permet de garantir l’échange des valeurs du champ électrique et magnétique sur les bords des surfaces élémentaires après chaque itération temporelle. L’exécution correcte du programme par tout processus impose le séquencement des opérations suivantes à chaque itération ;

La mise à jour des valeurs du champ électrique à partir des équations de Maxwell.

L’échange des valeurs frontalières du champ électrique entre processus adjacents.

La mise à jour des valeurs du champ magnétique à partir des équations de Maxwell.

Échange des valeurs frontalières du champ magnétique entre processus adjacents.

On a appelé les valeurs frontalières basses les valeurs du champ situées à la frontière avec le processus de rang inférieur et les valeurs frontalières hautes les valeurs situées à la frontière avec le processus de rang supérieur. Chaque processus doit envoyer les valeurs frontalières basses du champ électrique vers le processus de rang inférieur et les valeurs frontalières hautes du champ magnétique vers le processus de rang supérieur, et réciproquement il doit recevoir les valeurs frontalières hautes du champ magnétique relatives au processus de rang inférieur et les valeurs frontalières basses relatives au champ électrique du processus de rang supérieur (cf. Figure I.15). A la fin de chaque itération on met une barrière de synchronisation des processus où tous les processus doivent attendre avant d’entamer les calculs pour une nouvelle itération.

Volume calculé par le Processus

Pn-1

H(xmax) calculés par Pn-1

E(xmin) calculés par Pn

H(xmax) calculés par Pn

Volume calculé par le Processus Pn Volume calculé par le Processus Pn+1

E(xmin) calculés par Pn+1

xmin xmax xmin xmax xmin xmax

Dans notre cas chaque nœud de calcul dispose de sa propre mémoire, on parle donc d’un parallélisme distribué.

D'une manière générale, tout processus est pénalisé en terme de vitesse moyenne par les passages des données entre processus adjacents où sa vitesse est minimale. Selon la loi d’Amdahl [11], on caractérise la vitesse d’un programme parallèle (speedup) par le rapport entre le temps d'exécution du même programme en version séquentielle sur un monoprocesseur par le temps d'exécution de ce programme en version parallélisé.

Np Pp Ps Tp Ts S + = = 1 (I.64)

Avec Pp : la partie parallèle du programme et Ps est sa partie séquentielle, telle que Pp+Ps=1.

Np est le nombre de processeurs utilisés.

On voit que lorsque le nombre des processeurs est important la vitesse du programme est définie seulement par la partie séquentielle.

Ps

S 1 Lorsque Npa∞ (I.65)

Ainsi pour réduire la vitesse du programme, on a intérêt à réduire la partie séquentielle et augmenter le nombre des processeurs utilisés. En raison des contraintes de partages des ressources informatiques entre plusieurs utilisateurs, on a décidé d’utiliser seulement 8 processeurs sur 82 pour chaque simulation.

Moses et al. ont étudié la variation de la vitesse d’un programme parallèle (speedup) en fonction du nombre de processeurs utilisés pour une taille de la partie séquentielle du programme variable [12]. Ils ont ainsi trouvé une augmentation de la vitesse d’un facteur 8 pour une taille de la partie séquentielle de l’ordre de 1%. Sachant que dans notre programme cette partie est limitée seulement à la génération de masques de calcul c'est-à-dire la géométrie de la chambre, elle représente moins de 1% du programme entier.

On présente l’organigramme de simulation parallèle :

Fin

Synchronisation des processus Calcul des valeurs du champ

électrique

Communication des valeurs frontalières du champ électrique entre les processus

adjacents (envoi synchrone)

Communication des valeurs frontalières du champ magnétique entre les processus

adjacents (envoi synchrone) Calcul des valeurs du champ

magnétique

Fin des itérations Début

Définition et initialisation des tableaux

Initialisation de l’environnement MPI

Test sur le rang du processus

La station de travail est le cluster de l’université Paris-Est Marne-La-Vallée. Il comporte 41 nœuds : un nœud maître ayant deux processeurs de 2,8 GHz, une mémoire vive de 2 GO et 4 disques de 73 GO, et 40 nœuds de calcul contenant chacun deux processeurs de fréquences égales à 2,8 GHz, une mémoire vive de 2020 MO et 1 disque de 120 GO. Ces nœuds sont gérés par le logiciel de clustering ALINKA. Les ‘‘jobs’’ - les programmes à exécuter - sont lancés sur le nœud maître via l’interface web du cluster.

Pour illustrer le gain de temps avec la parallèlisation du programme, on a simulé la chambre réverbérante bidimensionnelle avec un maillage de 7,5 mm c’est à dire 414×330 cellules et un nombre d’itérations égal à 500000 sur 8 processeurs similaires (4 noeuds) pour trouver un temps de simulation de 1,16 heures. Dans le cas du programme séquentiel exécuté sur une seule machine possédant un seul processeur de 3GHz et une mémoire vive de 3GO, on trouve un temps d’exécution égale à 18,86 heures, ainsi le temps d’exécution est à peu prés 16 fois plus faible avec un code parallèle (le processeur utilisé pour le code séquentiel fonctionne en partition de temps avec le système d’exploitation windows®).

Documents relatifs