2
2 1 1 0 0 0 0 0
x1
3
1 2 1 1 0 0 0 0
x2
4
1 1 2 1 1 0 0 0
x3
=
5
0 1 1 2 1 1 0 0
x4
5
0 0 1 1 2 1 1 0
x5
5
0 0 0 1 1 2 1 1
x6
5
0 0 0 0 1 1 2 1
x7
4
0 0 0 0 0 1 1 2
x8
3
La méthode est basée sur l’itération suivant :
x1 = (3 - x2 - x3)/2
x2 = (4 - x1 - x2 - x3)/2
xi = (5 - xi-2 - xi-1 - xi+1 - xi+2) / 2 pour i =3,4,…,6
x7 = ( 4 - x5 - x6 - x8)/2
x8 = (3 - x6 - x7)/2
On suppose que le teste de la convergence est assuré par une fonction t(x,y) qui retourne vrai si la
distance (métrique) entre x(x1,.. xi , …x8) et y(y1,... yi , …y8) est suffisamment petite sinon faux.
A/ Dans le cas où l’on voudrait utiliser une méthode itérative asynchrone avec 5 processeurs un maître et 4
esclaves, décrire un graphe de taches correspondant au calcul d’une itération en indiquant à chaque
sommet son coût de calcul (nombre d’opérations) et chaque arc le coût de communication.
B/ Écrire un pseudo-code de type MPI résolvant ce problème.
Annexe : Pseudo-code
Un programme est une suite d’actions composées comme suite :
debut action1; action2; … actionn; fin ;
Une action peut être :
un appel d’une fonction ou d’une procédure (une procédure est un programme);
une opération arithmétique.
la création par le processus maître d’un processus esclave
une opération de communication (envoyer, recevoir) ;
une opération d’entré/sortie (read/write)
une structure de choix : si condition alors action1 sinon action2 fin_si ;
une structure itérative qui est une des 3 structures suivantes :
pour i = 1 à n faire
action
fin_pour;
tantque condition faire
action
fin_tantque;
repeter
action
jusq_a condition;
La structure de données qui est souvent manipulée est la structure de tableau sur cette structure on admet les
opérations suivantes :