Vous êtes sur la page 1sur 5

Projet évalué

Master GLSI- SRT -2 - ESP – 2023-2024


Date début : 01/03/2024 Date fin : 15/03/2024

Importer le projet dénommé « ProjetExamenMasterGLSI_SRT_2023_2024.zip » dans votre


environnement de développement (IDE). Une fois le projet importé, vous avez quatre packages à
savoir « sequentiel », « parallel » , « schedule » et « fjcomp » . Dans le package « sequentiel », se
trouvent les classes « Fibonacci.java » et « MatrixProduct_sequentiel.java ». Dans le package
« parallel », se trouvent les classes « MatrixProduct_parallel_static.java » ,et
« MatrixProduct_parallel_self.java. Dans le package « schedule », se trouvent les classes
« staticSchedule.java » et « selfSchedule.java ». Le package « fjcomp » contient le fichier
« Fibonacci.fj ». Le fichier jar du compilateur fjcomp se trouve dans le package par défaut et se
nomme « compiler.fjcomp.jar ».

I) Exercice 1 (14pts) :
Objectif :
 L’objectif de cet exercice est d’évaluer votre niveau de compréhension et
votre capacité pratique à implémenter un programme parallèle
manuellement ou « à la main ».
Indications :
 Cet exercice porte sur le parallélisme itératif. Vous pouvez vous inspirer du
code source traitant du programme parallèle de calcul de PI.
 Cet exercice est une évaluation portant sur les chapitres 1 (Introduction) , 2
(Algorithme de répartition d’itération) et 3 (les Threads)..
Support :
 Se référer aux supports de cours (électronique et multimédia) et aux codes
sources des cours se rapportant aux chapitres précités.
Avertissement :
 Tout code qui sort du modèle de code traité en cours ou toute copie
littérale de programme issue notamment de « ChatGPT » ne sera pas
considéré comme valable.
Etant donné le programme séquentiel de calcul du produit de deux matrices
(MatrixProduct_sequentiel.java ) :
a. Commencez d’abord par relever les performances de votre ordinateur sur lequel les
exécutions sont effectuées et remplir la colonne vide.

1
Modèle du processeur
Nombre de cœurs-processeurs
Fréquence par cœur-processeur
RAM

b. Procéder aux exécutions du programme séquentiel de MatrixProduct_sequentiel.java


avec les matrices de tailles M=4096 , N=2048 , P=2048 ; puis relever les temps
d’exécution et reporter dans la colonne correspondante:
Taille Temps (s)
M=4096 , N=2048 , P=2048

c. Implémenter les programmes parallèles suivants :


MatricProduct_parallel_static : correspondant au programme parallèle de calcul de
produit de matrices utilisant l’algorithme de répartition d’itération dit « static
scheduling » (staticSchedule.java)
MatrixProduct_parallel_self : correspondant au programme parallèle de calcul de
produit de matrices utilisant l’algorithme de répartition d’itération dit « self
scheduling »( selfSchedule.java)
La boucle à paralléliser correspond à la boucle for(int i=0;i<M;i++) se trouvant dans
la procédure public void multiplierMatrice(){…}.
d. Vérifier a cohérence séquentielle
Une fois que les programmes parallèles sont implémentés, procéder à la vérification de
la cohérence séquentielle en comparant la matrice C issue du programme séquentiel à
la matrice C issue du programme parallèle. Pour ce faire écrire un programme qui
compare deux matrices.

e. Evaluer les performances

 Performance de MatricProduct_parallel_static
Exécuter le programme parallèle MatricProduct_parallel_static .java avec les
matrices de tailles figurant sur le tableau. Ensuite, faire varier le nombre de threads
dans le programme comme indiqué sur le tableau, puis exécuter et reporter les différents
temps d’exécution et accélérations de parallélisme dans le tableau suivant. La ligne
« Accélération » correspond à l’accélération de parallélisme qui correspond au rapport
entre le temps d’exécution séquentielle sur le temps d’exécution parallèle.
Une fois le tableau rempli, tracer la courbe dont les abscisses sont le « nombre de
threads » et les ordonnées sont « l’accélération de parallélisme ». Analyser et interpréter
la courbe obtenue.

2
Taille M=4096 , N=2048 , P=2048
threads 2 4 6 8 10 12 20 30
Temps(s)
Accélération

 Performance de MatricProduct_parallel_self
Exécuter le programme parallèle MatricProduct_parallel_self .java avec les matrices de tailles
figurant sur le tableau suivant. Ensuite, faire varier le nombre de threads et le Groupsize ( c’est-à-
dire la taille de partition allouée dynamiquement) dans le programme comme indiqué sur le tableau,
puis exécuter et reporter les temps d’exécution.
La ligne « Accélération » correspond à l’accélération de parallélisme qui correspond au rapport
entre le temps d’exécution séquentielle sur le temps d’exécution parallèle.
Une fois le tableau rempli, tracer les courbes dont les abscisses sont le « nombre de threads » et les
ordonnées sont « l’accélération de parallélisme », chaque courbe devra correspondre à une valeur
de « Groupsize ». Analyser et interpréter les courbes obtenues.
NB : les valeurs décimales de temps et d’accélération à reporter dans le tableau
doivent être limitées à 1 chiffre après la virgule.

Taille M=4096 , N=2048 , P=2048


threads 2 4 6 8 10 12 20 30 Groupsize
Temps(s) 8
Accélération
Temps(s) 64
Accélération
Temps(s) 128
Accélération
Temps(s) 256
Accélération
Temps(s) 512
Accélération
Temps(s) 1024
Accélération
Temps(s) 2048
Accélération

3
II) Exercice 2 (6pts)
Objectif :
 L’objectif de cet exercice est d’évaluer votre niveau de compréhension et
votre capacité pratique à implémenter un programme parallèle en utilisant
un compilateur paralléliseur.
Indications :
 Cet exercice porte sur le parallélisme récursif basé sur la stratégie diviser
pour régner.
 Cet exercice est une évaluation portant sur le chapitre 4 (Algorithmes diviser
pour régner)
Support :

 (14) Programmation parallèle - Chapitre4 - Divide and Conquer- Master IABD-1


ESP DAKAR - YouTube

Soit le programme séquentiel de calcul du nième terme de fibonacci dénommé Fibonacci.java:


a. Exécuter le programme séquentiel Fibonacci.java avec n=50, puis reporter le temps
d’exécution sur la colonne « Temps » et la valeur retournée sur la colonne
« Fibonacci(50) »:
n Temps (s) Fibonacci(50)
50

b. Dans le fichier Fibonacci.fj se trouvant dans le package fjcomp, utiliser le compilateur


FJComp pour insérer des directives de compilation afin de générer le code parallèle du
calcul de fibonacci. Les directives à insérer doivent contenir la clause indiquant un
nombre de threads égal à 2 et un paramètre MaxDepth égal 20 (l’écriture de ce
paramètre est sensible à la casse).
c. Une fois les directives insérées, générer le code parallèle correspondant.
d. Vérifier que la cohérence séquentielle est respectée et expliquer comment vous avez
procédé.
e. Une fois le code parallèle généré, procéder aux exécutions en faisant varier les
paramètres comme indiqué dans le tableau suivant.
La ligne « Accélération » correspond à l’accélération de parallélisme qui correspond au
rapport entre le temps d’exécution séquentielle sur le temps d’exécution parallèle.
Une fois le tableau rempli, tracer les courbes dont les abscisses sont le « nombre de
threads » et les ordonnées sont « l’accélération de parallélisme », chaque courbe devra
correspondre à une valeur de « MaxDepth ». Analyser et interpréter les courbes
obtenues.

NB : les valeurs décimales de temps et d’accélération à reporter dans le tableau doivent


être limitées à 1 chiffre après la virgule.

4
Taille n=50
threads 2 4 6 8 10 12 20 30 MaxDepth
Temps(s) 20
Accélération
Temps(s) 25
Accélération
Temps(s) 30
Accélération
Temps(s) 32
Accélération
Temps(s) 34
Accélération
Temps(s) 36
Accélération
Temps(s) 38
Accélération
Temps(s) 40
Accélération
Temps(s) 42
Accélération

Consigne : En retournant, votre projet, exporter-le en format zip exploitable, puis préciser votre
(vos) nom(s), prénom(s) et classe sur un document word que vous joignez avec.
Livrable :
i. Le projet zippé (qui est la combinaison du projet de base auquel vous ajoutez les
programmes parallèles que vous avez implémentés)
ii. Un document word où vous présenterez les réponses aux aux questions posées, ainsi que
les tableaux remplis et les courbes (graphes).
Respect des délais :
Tout projet rendu au-delà du délai indiqué en haut du document entrainera une pénalité de
points.
NB : pour toute ambiguïté constatée sur une ou plusieurs questions, vous pouvez m’écrire sur
senghor.abdourahmane@esp.sn

Bonne Chance !!!!

Vous aimerez peut-être aussi