• Aucun résultat trouvé

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
2
0
0

Texte intégral

(1)

TP HPC 4

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

L’objectif de ce TP est d’exp´erimenter une approche de la parall´elisation d’une application `a l’aide de OpenMP. Il s’appuyera principalement sur des exemples d´ej`a effectu´es dans les TP pr´ec´edents.

Exercice 1

L’objectif est dans un premier temps d’examiner, de mani`ere visuelle, la fa¸con dont OpenMP r´epartit les calculs. Pour ce faire, le fichier hpcOpenmpSchedule.cppvous est fourni. Celui-ci permet de g´en´erer l’image en niveau de gris qui apparaˆıt sur la figure 1.

Figure1 – Vue de l’image initiale

1. Compilez puis testez ce programme, pour v´erifier que l’image obtenue est bien correcte. Vous lancerez son ex´ecution par la commande :

. /hpcOpenmpSchedule 400 300 toto.pnm

o`u les valeurs 400 et 300 repr´esentent respectivement la largeur et la hauteur de l’image, et le derni`ere param`etre le nom du fichier de sortie.

2. Parall´elisez la boucle externe sur 3 threads et modifiez le calcul effectu´e de mani`ere `a affecter `a chaque pixel, un niveau de gris identifiant le thread qui l’a calcul´e. On pr´ecise qu’un niveau de gris est ici n´ecessairement une valeur comprise entre 0 (noir) et 255 (blanc). Apr`es ex´ecution, v´erifiez que l’image obtenue correspond bien `a ce qui est attendu.

3. Sp´ecifiez une r´epartition par segment de 50 pixels et v´erifiez `a nouveau que le r´esultat obtenu est correct, en utilisant toujours 3 threads.

4. Appliquez `a pr´esent les deux parall´elisations pr´ec´edentes sur la boucle imbriqu´ee et v´erifiez que les images obtenues sont correctes.

5. Examinez le temps de calcul `a l’issue de l’ex´ecution des quatre parall´elisations, en faisant une moyenne sur plusieurs essais1 (vous compl´eterez le fichier calc nomm´e stat.odsfourni). Qu’en concluez-vous ?

6. Appliquez `a pr´esent la parall´elisation sur les deux boucles en mˆeme temps (directivecollapse), avec des segments de 50 pixels, puis de 32 pixels. Que pensez-vous des r´esultats obtenus ? 7. Echanger le sens de parcours de l’image, en changeant l’ordre des deux boucles. Qu’en concluez-

vous ?

1. Pour que les temps afich´es soient significatifs, il est conseill´e d’inclure les deux boucles dans une troisi`eme boucle qui ex´ecutera 1000 fois le code.

1

(2)

Exercice 2

On reprend dans cet exercice l’application qui permet de calculer les sommes suivantes (voir TP2) :

S1= ΣNi=1i S2= ΣNi=1√ i s3= ΣNi=1

i×logi

1. Ecrire une application parall`ele utilisant OpenMP permettant de r´ealiser le calcul de ces trois sommes ;

2. Comparez les r´esultats obtenus par cette application avec ceux obtenus lors du TP2 (sans routines AVX ...). Vous pourrez dresser un tableau de statistiques pour 1 `a N threads, N repr´esentant le nombre de coeurs logiques que per¸coit votre syst`eme d’exploitation.

On pr´ecise que pour avoir des mesures relativement fiables, il est n´ecessaire d’effectuer plusieurs ex´ecutions avec le mˆeme nombre de threads et d’effectuer la moyenne des r´esultats obtenus.

Exercice 3

Apr`es avoir r´ecup´er´e les sources du lancer de rayon s´equentiel fournies pour le TP3, ´etudiez diff´erentes implantations parall`eles de celui-ci en utilisant OpenMP :

1. parall´elisation statique de la boucle externe ; 2. parall´elisation statique de la boucle interne ; 3. parall´elisation statique des deux boucles ; 4. parall´elisations dynamiques

Evaluez diff´erentes solutions et comparez-les `a la version multi-thread´eee dynamique qui a ´et´e d´evelopp´ee dans le TP2.

2

Références

Documents relatifs

En d’autres termes, pour tout nombre premier p, il existe ` a isomorphisme pr` es un et un seul groupe d’ordre p, qui est le groupe cyclique (donc ab´ elien) C

Vous utiliserez cette fonction pour afficher tous les noeuds isol´ es d’une matrice d’adjacence pour les fichiers se trouvant dans le dossier Data.

Elle contient le fichier tp2.cpp qui correspond au squelette de l’application que vous allez d´ evelopper durant ce TP, ainsi qu’un sous dossier Data, dans lequel figurent

Ajoutez et testez la fonction suivante au code d´ evelopp´ e lors du TP pr´ ec´ edent : void copie(MatriceAdjacence m1, MatriceAdjacence &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