Vous êtes sur la page 1sur 4

FEI- Dept : Info USTHB, le 5 Janvier 2017

Sujet d’Examen + CORRIGE


(calcul parallèle M2-RSD)

Exercice I. Étude de performance et loi d’Amdhal


a) Soit une machine parallèle à mémoire partagée comportant 16 processeurs. La table 1
donne le temps requis par un programme parallèle P1 pour traiter un même ensemble de
données avec différents nombres de processeurs (1, 2, 4, 8). Le temps requis par une
version séquentielle du programme avec les mêmes données est de 100 ms.

Nombre de processeurs Temps (en ms)


1 150
2 60
4 40
8 50

 Quelle est l’accélération lorsqu’on utilise 4 processeurs?


 Pour quel nombre de processeurs obtient-on la meilleure efficacité et quelle est cette
efficacité — exprimée en pourcentage?
 Quel sera le comportement du programme (accélération et efficacité) si on l’exécute
sur les mêmes données mais en utilisant les 16 processeurs? Expliquez brièvement
pourquoi le programme aurait ce comportement.

Correction
Tseq du programme séquentiel = 100ms
programme parallèle P1

1) accélération = Tseq / T parallèle


pour p = 4 processeurs, accélération = 100/40 = 2.5
2) - pour p =1, accélération = 100/150 = 0.66 → efficacité = accélération/p = 0.66/1
=0.66 → 66%
- pour p =2, accélération = 100/60 = 1.66 → efficacité = accélération/p = 1.66/2 =0.83-->
83%
- pour p =4, accélération = 100/40 = 2.5 → efficacité = accélération/p = 2.5/4 =0.63 → 63%
- pour p =8, accélération = 100/50 = 2 → efficacité = accélération/p = 2/8 =0.25 -->25%
3) meilleure efficacité 83% avec p =2.
4) comportement accélération diminue , efficacité diminue

b) Pour un problème d’une certaine taille, on a déterminé que 5 % des instructions d’un
programme P2 étaient des instructions devant être exécutées séquentiellement par un
unique processeur. Par contre, tout le reste peut s’exécuter en parallèle. Avec quel nombre
de processeurs peut-on espérer obtenir une accélération supérieure ou égale à 10 en
traitant les mêmes données (c’est-à-dire en gardant la même taille de problème)?

1/2
Correction
Selon la loi d'Amdhal

accélération = 1/(a + (1-a)/p)


a est la fraction séquentiellement
a = 5% = 0.05
accélération = 1/(a + (1-a)/p) = p/ (1+ (a(p-1))

p/ (1+ (a(p-1)) ≥ 10 ?
p ≥ 19

Exercice 2 : Threads en JAVA : Soit la déclaration de la classe suivante :

a) public class MonThread extends Thread


{
public void run()
{ // traitement du thread } }

- Donnez la bonne réponse


Pour créer le thread et l'exécuter, il faut faire les instructions suivantes:
1. Runnable p = new Runnable ();
MonThread q = new Thread(p);
q.start();
2. MonThread p = new MonThread ();
p.start();
3. MonThread p = (MonThread)(new Thread());
p.start()
Correction
MonThread p = new MonThread ();
p.start();

b) On peut demander à une marionnette de lever et baisser chacun de ses bras. Plusieurs
processus travaillant en concurrence se proposent de lever et baisser les mains de la
marionnette. Voici le programme :

class Agiter extends Thread {


Marionnette o;
void leverMains(){
synchronized(o)
o.leverMainDroite();
o.leverMainGauche(); }

void baisserMains(){
synchronized(o)
o.baisserMainDroite();
o.baisserMainGauche(); }

public void run(){


leverMains();

2/2
baisserMains(); } }

Comment gérer la synchronisation entre processus afin que la marionnette n’ait jamais un seul
bras en l’air. Autrement dit, si un processus dit à la marionnette de lever les mains, il ne faut
pas qu’un autre processus puisse lui demander de baisser les mains en même temps. Mais une
fois qu’un processus P a fini de demander de lever les mains, un autre processus peut venir
s’intercaler avant que le processus P demande à la marionnette de baisser les mains.

Exercice 3 : Programmation parallèle sous MPI. Calcul des maximums d'une matrice

Soit n un entier positif. On a une grosse matrice carrée, A, de taille n×n, et on veut
déterminer, pour chaque ligne et chaque colonne, la valeur maximum. De plus, ces maximums
devront être connus d'un seul et unique processus, disons uniquement le processus 0.
On travaille sur une machine parallèle à mémoire distribuée qui comporte p processeurs. On
suppose que n est divisible par p et p << n.

Ecrire un programme MPI/C qui réalise le calcul des maximums de la matrice A.

Par exemple, pour la matrice suivante 9 × 9 avec, à droite et en bas, les différents maximums,
qui doivent ultimement être tous connus du processus 0 :

15 23 34 36 74 81 91 11 2 | 91
46 74 24 14 95 52 31 42 18 | 95
21 29 38 33 34 32 35 36 37 | 38
48 55 69 77 86 11 14 22 13 | 86
24 22 36 58 65 73 77 79 71 | 79
71 21 13 29 22 24 28 25 26 | 71
79 76 71 75 73 37 22 18 14 | 79
2 8 7 4 1 9 16 13 5 | 16
93 24 25 22 28 26 21 27 29 | 93
----------------------------------
93 76 71 77 95 81 91 79 71

programme MPI (6points)

Partie déclaration 1 point


if (rank ==0)
{
 Envoyer les tranches de matrice à p-1 processus
 recevoir le vecteur maximum lignes
 Recevoir le vecteur maximum colonnes
 affichage
 }
else
 {recevoir les tranches de matrice
 calculer le vecteur maximum lignes
 envoyer le vecteur maximum lignes au processus 0
 calculer le vecteur maximum colonnes
 envoyer le vecteur maximum colonnes au processus 0

}

3/2
Exercice 4 : Grille de calcul.

 Donnez la différence entre une Grille informatique, un Cluster et un Cloud,

 Décrire brièvement l’architecture générale d’une Grille de calcul.

4/2

Vous aimerez peut-être aussi