• Aucun résultat trouvé

Introduction de la m´ethode par un cas simple

III.6 Param`etres de Landau

IV.1.2 Traitement num´erique du terme densit´e de port´ee finie

IV.1.2.1 Introduction de la m´ethode par un cas simple

s = N X a=1 N X b=1 N X c=1 f1(a) f2(a, b) f3(b, c) .

D’un point de vue num´erique, cette somme multiple se programme sous la forme d’un ensemble de boucles imbriqu´ees. Il existe plusieurs fa¸cons d’organiser ces boucles, certaines ´etant plus coˆuteuses que d’autres en ce qui concerne le temps d’ex´ecution du programme. La structure de boucles la plus simple pour calculer la quantit´e s est repr´esent´ee sur la Fig. IV.3. a = 1, ..., N b = 1, ..., N s = 0 c = 1, ..., N s = s + f1(a)f2(a, b)f3(b, c)

Au coeur des boucles, trois op´erations sont r´ealis´ees, deux multiplications et une addi- tion. Avec cette structure, le temps de calcul Ts de la quantit´e s est donc

Ts= N3(2t[×] + t[+]),

avec t[×] le temps d’ex´ecution d’une multiplication et t[+] celui d’une addition.

Nous allons montrer qu’il existe une organisation des boucles qui r´eduit le nombre d’op´era- tions mises en jeu. Pour rechercher cette structure optimale, nous reformulons le probl`eme pour le mod´eliser graphiquement.

Prescription pour la repr´esentation graphique : La quantit´e s fait intervenir une somme sur l’ensemble d’indices {a, b, c}. Ces indices sont corr´el´es par des fonctions, par exemple f2(a, b) corr`ele les indices a et b, de mˆeme f3(b, c) corr`ele b et c. Ces fonctions forment ainsi des blocs ins´ecables : f2(a, b)6= f2.1(a) .f2.2(b), que l’on peut repr´esenter par des points. De plus, ces diff´erentes fonctions sont connect´ees entre elles par leurs indices communs : f1(a) et f2(a, b) sont connect´ees par l’indice a, de mˆeme, l’indice b connecte f2(a, b) et f3(b, c). Nous repr´esentons une connection entre deux fonctions par une ligne labell´ee par l’indice commun. Par exemple, la ligne reliant f1(a) et f2(a, b) sera labell´ee par l’indice a. Ainsi, nous obtenons, pour la quantit´e s, la repr´esentation graphique de la Fig. IV.4. a f2(a, b) f1(a) b f3(b, c) v v v v

Fig. IV.4 – Repr´esentation graphique de la quantit´e s.

L’int´erˆet de cette repr´esentation graphique est de mettre clairement en ´evidence quelles fonctions sont connect´ees par des indices communs. L’´etape suivante consiste `a d´eterminer l’indice de la somme `a r´ealiser en premier, a, b ou c.

La repr´esentation graphique de la Fig. IV.4 montre que,

– la somme sur l’indice a fait intervenir les fonctions f1(a) et f2(a, b). Pour l’effectuer, il faut donc r´ealiser deux boucles, l’une sur l’indice a qui est somm´e et l’autre sur l’indice b qui est ici spectateur.

– la somme sur l’indice b met en jeu les fonctions f2(a, b) et f3(b, c). Il y a donc trois indices `a boucler : l’indice de sommation b et les deux indices spectateurs a et c. – la somme sur l’indice c concerne la seule fonction f3(b, c). Il y a alors deux indices de

boucles : l’indice de sommation c et l’indice spectateur b.

Cette analyse montre qu’il n’est pas avantageux de faire la somme sur l’indice b en premier. En effet, celle-ci n´ecessite trois boucles imbriqu´ees portant sur les indices a, b et c. Il reste maintenant `a discriminer entre les sommes sur les indices a et c. Toutes les deux impliquent seulement deux boucles imbriqu´ees. Cependant, le graphe montre que ces deux sommes ne sont pas ´equivalentes : un lien est labell´e par l’indice a, alors qu’aucun ne l’est par l’indice c. Ce lien repr´esente la multiplication entre les fonctions f1(a) et f2(a, b). Cette multiplication, coˆuteuse en temps de calcul, d´efavorise la somme sur l’indice a. La premi`ere somme que nous faisons est donc celle sur l’indice c, g (b) = Pcf3(b, c). Avec cette pr´esomme, la quantit´e s se r´e´ecrit : s = Pa,bf1(a) f2(a, b) g (b). La repr´esentation

graphique correspondante, donn´ee sur la Fig. IV.5, est obtenue avec la mˆeme prescription que pr´ec´edemment. a f2(a, b) f1(a) b g(b) v v v v

Fig. IV.5 – Repr´esentation graphique de la quantit´e s.

Ce graphe montre que les indices a et b ”voient” le mˆeme type d’environnement constitu´e par : une fonction `a une variable (f1(a) pour a et g (b) pour b), une fonction `a deux variables (f2(a, b) pour a et b) et un lien. Ainsi, les sommes sur les indices a et b sont ´equivalentes du point de vue du temps de calcul. Nous choisissons d’effectuer en premier la somme sur l’indice b, h (a) = Pbf2(a, b) g (b). La quantit´e s se r´e´ecrit alors comme s =Paf1(a) h (a), et le probl`eme est r´esolu.

Pour construire les pr´esommes g (b) et h (a), et finalement calculer s, la structure de boucles est la suivante :

c = 1, ..., N g(b) = g(b) + f3(b, c) g(b) = 0 a = 1, ..., N s = 0 h(a) = 0

h(a) = h(a) + f2(a, b) g(b) s = s + f1(a) h(a)

b = 1, ..., N

b = 1, ..., N

Fig. IV.6 – Structure de boucles qui permet d’optimiser le temps de calcul de s.

Au sein de cette nouvelle structure, le calcul de la pr´esomme g (b) n´ecessite N2 addi- tions. La deuxi`eme pr´esomme h(a) fait intervenir N2 multiplications et autant d’additions. Enfin, le calcul final de la quantit´e s fait intervenir N multiplications et additions. Ainsi, le temps d’ex´ecution de cette nouvelle structure de boucles est

Ts′ = N2t[+] + N2(t[×] + t[+]) + N(t[×] + t[+]) = N2t[+] + N(N + 1)(t[×] + t[+]).

Num´eriquement, le temps d’ex´ecution d’une addition est n´egligeable devant celui d’une multiplication, t[+]≪ t[×]. Les expressions des temps de calculs Tset Ts′ deviennent alors

Ts = 2N3t[×] T′ = N(N + 1) t[×]



Ces ´equations montrent que le temps d’ex´ecution T′

s est syst´ematiquement plus court que Ts. Par rapport au premier sch´ema de la Fig. IV.3, la nouvelle structure de boucles pr´esent´ee sur la Fig. IV.6 permet donc de r´eduire le temps de calcul de la quantit´e s. Pour mettre en place cette structure de boucles optimis´ee, nous nous sommes appuy´es sur une repr´esentation graphique de la quantit´e s. Dans le cas simple de la quantit´e s qui ne fait intervenir que trois fonctions (f1, f2 et f3) et trois indices (a, b et c), cette repr´esentation graphique peut sembler de peu d’int´erˆet et l’organisation optimale des boucles peut ˆetre directement d´etermin´ee `a partir de l’expression s =Pa,b,cf1(a) f2(a, b) f3(b, c).

Toutefois, dans les cas des champs moyen et d’appariement de la m´ethode Hartree-Fock- Bogoliubov, les expressions sont plus compliqu´ees. Les sommes portent sur un plus grand nombre d’indices, ces derniers ´etant coupl´es par plusieurs fonctions. La repr´esentation graphique de ces expressions permet alors de mieux visualiser l’ordre selon lequel les indices doivent ˆetre somm´es pour r´eduire le temps de calcul. Cet ordre d´etermine compl`etement l’organisation et la structure des boucles dans le programme. Dans la partie suivante, nous appliquons cette technique au cas du terme de champ ´echange Γ[1]qΩ=m+s

mνa,mνc(E).