• Aucun résultat trouvé

TP HPC 5 Master Informatique - 1`ere ann´ee Ann´ee 2021-2022

N/A
N/A
Protected

Academic year: 2022

Partager "TP HPC 5 Master Informatique - 1`ere ann´ee Ann´ee 2021-2022"

Copied!
2
0
0

Texte intégral

(1)

TP HPC 5

Master Informatique - 1` ere ann´ ee Ann´ ee 2021-2022

Dans ce TP, vous allez exp´erimenter les op´erations de communications collectives et point `a point de MPI, au travers d’un programme d’estimation du nombreπavec une m´ethode de Monte-Carlo.

Principe de la m´ ethode

On consid`ere que l’on dispose d’un cercle de rayonr, inscrit dans un carr´e de cˆot´e 2r(voir figure 1).

Figure 1 – Sch´ematisation de la g´eom´etrie pour les tirages al´eatoire. Le rayon du cercle est ici de 1 et le cˆot´e du carr´e de 2.

On tire un point au hasard dans le carr´e et on se pose la question de savoir quelle est la probabilit´e que ce point soit ´egalement dans le cercle. Cette probabilit´e est ´egale au rapport des surfaces des deux figures, c’est `a dire, en notantP la probabilit´e recherch´ee :

P =Aire du cercle Aire du carre = πr2

(2r)2 = π 4 On peut donc ´ecrire :π= 4×P

Tout le probl`eme si l’on cherche `a estimer π est alors de pouvoir calculer ou estimer la valeur de P. Les m´ethodes de Monte-Carlo sont des approches probabilistes qui permettent de r´esoudre ce type de probl`eme, mˆeme si elles ne sont pas toujours les plus efficaces. Dans le cadre de cet exercice, leur application sera tr`es simple :

— on tireN positions de points au hasard dans le carr´e (une valeur dexet une valeur dey, toutes deux comprises entre −1 et 1) ;

— pour chaque point, on v´erifie s’il se trouve dans le cercle, auquel cas on incr´emente un compteur de points internes au cercle ;

— `a la fin du processus, en notant I le nombre de points qui se trouvent dans le cercle, on peut

´

ecrire :P = NI et donc en d´eduire une valeur approch´ee deπ.

Exercice 1

Ecrire une version s´equentielle d’un programme implantant le processus de Monte-Carlo d´ecrit ci- dessus. On pr´ecise les ´el´ements suivants :

— la g´en´eration de nombres al´eatoires pourra ˆetre effectu´ee via la fonctionrand(), qui retourne un entier compris entre 0 et RAND MAX;

— un point est consid´er´e dans un cercle de rayon r si ses coordonn´ees (x, y) v´erifient l’´equation x2+y2< r2;

1

(2)

— l’application stoppera les calculs si l’une des deux conditions suivantes est atteinte :

— un nombre maximal de points, fix´e par une constante, a ´et´e atteint ;

— une pr´ecision suffisante sur le calcul deπa ´et´e atteinte, valeur ´egalement fix´ee par une constante.

La pr´ecision atteinte (ou l’erreur commise) sera calcul´ee comme la diff´erence entre la valeur obte- nue par l’estimation courante et une valeur fix´ee deπ. Vous pourrez prendre :

π= 3.141592653589793238462643 .

Une estimation de Monte-Carlo ´etant assez lente `a converger, il est conseill´e de fixer une pr´ecision faible pour les calculs, de l’ordre de 10−6.

Exercice 2

D´eveloppez une fonction permettant d’effectuer l’estimation deπen parall`ele avec MPI, qui n’utilisera que des communications collectives. Le principe en sera le suivant :

— Chaque processus g´en`ere it´erativements des paquets deN points et m´emorise deux quantit´es : 1. le nombre total de points tir´es al´eatoirement ;

2. le nombre total de points inscrits dans le cercle.

— `a la fin de chaque it´eration, les r´esultats sur ces deux quantit´es sont somm´es par un processus maˆıtre (par exemple le processus 0), qui determine ensuite si l’application doit stopper ou non, selon les deux conditions fix´ees `a la premi`ere question ;

— le r´esultat de cette ´evaluation est ensuite diffus´e `a tous les processus, qui peuvent alors d´eterminer s’ils doivent relancer une it´eration ou s’arrˆeter.

Remarque importante : Chaque processus devra initialiser son propre g´en´erateur de nombres al´eatoires de mani`ere diff´erente, afin de ne pas g´en´erer la mˆeme suite de nombres. Pour ce faire, vous pourrez utiliser la fonction srand()ainsi que l’identit´e du processus, afin d’obtenir une initialisation diff´erente.

Exercice 3

Dans cet exercice, vous allez d´evelopper une seconde version parall`ele de l’estimation deπ, qui permet- tra d’illustrer le fonctionnement des communications point `a point et la cr´eation de sous-communicateurs.

Principe

Dans cette version, un processus (qui sera appel´e serveur dans la suite de l’´enonc´e) sera charg´e de g´en´erer des paquets de nombres al´eatoires `a la demande et de les envoyer au processus demandeur.

Les autres processus effectueront les op´erations de g´en´eration des points `a partir des valeurs al´eatoires re¸cues du serveur et de la mise `a jour des deux variables compteurs qui leur sont associ´ees.

Lorsque le paquet aura ´et´e trait´e par chaque processus, les valeurs des compteurs seront somm´ees par l’un des processus, qui d´ecidera de la poursuite ou non de l’application et en informera les processus participant au calcul (cf exercice pr´ec´edent).

Le processus serveur : ce processus sera amen´e `a effectuer des tˆaches totalement diff´erentes des autres processus de l’application. Il sera donc n´ecessaire de cr´eer deux sous-communicateurs disjoints, l’un contenant uniquement le serveur et le second tous les autres processus. En effet, le serveur ne participant pas aux ´etapes d’´echanges collectifs qui auront lieu entre processus de calcul, votre application se bloquera si il fait partie du communicateur impliqu´e dans ces ´echanges. Notez cependant que pour les ´echanges point `a point, qui impliquent le serveuretles autres processus, c’est le communicateur global qui devra ˆ

etre utilis´e ...

Enfin, il sera n´ecessaire de pr´evoir un m´ecanisme d’arrˆet du processus serveur, par exemple en lui envoyant un message sp´ecifique lui permettant de d´eterminer que la fin de l’application est arriv´ee.

2

Références

Documents relatifs

Ajoutez et testez la fonction suivante au code d´ evelopp´ e lors du TP pr´ ec´ edent : void copie(MatriceAdjacence m1, MatriceAdjacence &amp;m2). qui recopie le contenu de la matice

La structure que vous utiliserez pour repr´ esenter cette file sera celle de liste doublement chaˆ ın´ ee, c’est ` a dire que chaque maillon de la liste chaˆın´ ee

Dans cet exercice, vous allez d´ evelopper une application permettant de relire ces matrices puis les sauvegarder dans le nouveau format qui sera propos´ e. Il est conseill´

Associ´ e ` a la remarque pr´ ec´ edente concernant la pile, cela signifie que lorsque vous empilez un sommet, son pr´ ed´ ecesseur dans l’ordre de parcours doit ˆ etre pr´

Vous vous assurerez que cette archive contient bien votre nom dans son intitul´ e (ce qui doit ˆ etre le cas avec les directives qui vous sont donn´ ees ci-dessous pour nommer

Le premier param` etre repr´ esente le nom qu’aura le fichier (extension .svg), le second param` etre repr´ esentera la variable de type fichier qui sera intialis´ ee par la fonction

Dans cette premi` ere partie, vous allez mettre en place les fonctions permettant d’initialiser la grille support au labyrinthe, de dessiner cette grille au format SVG et

Cette fonction sera appel´ ee apr` es construction du graphe de parcours, pour demander les cases de d´ epart et d’arriv´ ee dans le labyrinthe. Calcul