• Aucun résultat trouvé

Il est très difficile d’estimer le temps gagné grâce à cette réduction de modèle, car tous les programmes étant écrits sous MATLAB, les données de temps de calcul sont aléatoires et dépendantes de beaucoup de paramètres, tels que, par exemple, le temps d’affichage, etc. Il est donc beaucoup plus rigoureux de faire une estimation du nombre d’opérations effectuées réellement au cours de l’algorithme, puisque c’est ce nombre qui donnera une idée précise du temps gagné, si cet algorithme doit être implémenté en langage C par exemple.

Le nombre d’opérations (ou de « flops » = « float operations ») définit le nombre d’opérations de base (multiplications et additions) nécessaires dans une résolution d’équation. Il est déterminé par des fonctions MATLAB, ou par des résultats théoriques que nous allons détailler ici. Les résultats sont calculés pour l’expérience avec le fantôme (section 2.3).

Pour chacune des positions de la source et pour chacun des détecteurs, la résolution de l’équation requiert en premier lieu la définition du maillage et de la matrice de rigidité. Cette étape est commune à la résolution avec et sans réduction de modèle. En ce qui concerne la résolution proprement dite, il faut prendre en compte les opérations du préconditionnement (factorisation LU [Davis1997, Grigori2002, Lascaux1998], choisie par le logiciel COMSOL Multiphysics) puis celles de la résolution (GMRES [Saad1986]). De plus, une étape importante est celle de la projection dans la base d’ondelettes, qui n’est pas négligeable en temps de calcul et qu’il faut donc prendre en compte. Elle n’intervient évidemment pas dans le cas « sans réduction de modèle ».

Pour 3 positions de la source et pour 3 détecteurs, les nombres de « flops » sont résumés dans les 4 cas étudiés :

- sans réduction de modèle (résolution 0) ; - avec réduction niveau d'approximation 1 ; - avec réduction niveau d'approximation 2 ; - avec réduction niveau d'approximation 3.

Un graphe, en échelle semi-logarithmique, résume les moyennes de ces valeurs pour chaque étape.

2.4.1

Préconditionnement LU

C'est l'étape la plus coûteuse en nombre de calculs. La fonction MATLAB utilisée pour déterminer ce nombre d'opérations est spparms.m.

Figure 2.44. Représentation (en échelle logarithmique) du nombre d’opérations selon le niveau d'approximation, pour le préconditionnement LU.

2.4.2

Résolution GMRES

La résolution GMRES prend beaucoup moins de temps que le préconditionnement. Le nombre d’opérations dans cette étape est estimé à O(m×NNZ+m2×N) multiplications et O(NNZ+m×N) opérations de stockage, où N est la taille de la matrice de rigidité L, m est le nombre d’itérations dans l’algorithme GMRES, et NNZ est le nombre de valeurs « non- nulles » (NNZ = Nombre de Non-Zéros) dans la matrice creuse L [Saad1986]. Le nombre d’itérations est m = 16 dans notre cas. Nous avons donc l’estimation du nombre de flops suivante :

Figure 2.45. Représentation (en échelle logarithmique) du nombre d’opérations selon le niveau d'approximation, pour la résolution GMRES.

2.4.3

Projection dans la base d’ondelettes : multiplications de matrices

creuses

Nous avons mentionné cette étape de projection dans la nouvelle base : il s’agit de la double multiplication de la matrice L par la matrice d’ondelettes M : M×L×MT. Nous avons affaire à deux matrices creuses, et donc les multiplications de ces matrices particulières se font de manière optimisée. Il existe une théorie approfondie sur les matrices creuses [Lascaux1998, Yuster2004], qui explicite la façon d’organiser les coefficients non-nuls de chacune de ces

matrices afin de réduire le nombre de calculs lors de leur multiplication par exemple. Elle a été implémentée dans le logiciel MATLAB [Davis1997].

D’après T. A. Davis, créateur des fonctions MATLAB à ce sujet [Davis1997], il est très difficile de faire une estimation théorique du nombre d’opérations, car cela dépend du degré de « densité » de la matrice, c’est-à-dire du nombre de coefficients non-nuls. Comme pour GMRES, le nombre de non-zéros NNZ est à prendre en compte. Une fonction MATLAB, créée par T. A. Davis et donnant le nombre précis de flops dans le cas d’une multiplication de matrices, a alors été utilisée : ssmult.m. Voici le résumé de ces nombres :

Figure 2.46. Représentation (en échelle logarithmique) du nombre d’opérations selon le niveau d'approximation, pour la projection en ondelettes.

Remarque 1 : plus le niveau d'approximation choisi augmente, plus le nombre de flops est important. Cela est dû au fait que la matrice d’ondelettes au niveau 2 est moins creuse que celle au niveau 1, car les fonctions d’ondelettes au niveau 2 ont plus de valeurs non nulles, et celles au niveau 3 encore plus (voir Figure 2.2 dans la section 1.1) ; cela est valable pour les ondelettes de Haar, mais aussi pour toutes les autres.

Remarque 2 : le nombre d’opérations nécessaires à la projection du vecteur-source q (équation (2-5)) dans la base d’ondelettes est totalement négligeable devant celui que l’on vient d’étudier (il est de l’ordre de N = taille de q). On ne l'a donc pas calculé.

2.4.4

Synthèse

Nous pouvons finalement résumer ce nombre d’opérations dans le Tableau 2.3, en moyennant les résultats obtenus sur les différentes sources et différents détecteurs :

Sans réduction de modèle Niveau d'ap- proximation 1 Niveau d'ap- proximation 2 Niveau d'ap- proximation 3 factorisation LU 3.1×109 6.87×108 1.44×108 3.07×107 résolution GMRES 1.14×107 3.61×106 2.23×106 1.17×106 multiplications de matrices - 1.22×106 2.49×106 4.18×106 total 3.12×109 6.92×108 1.49×108 3.6×107

Tableau 2.3. Moyennes des nombres de flops au cours des différentes étapes, sans et avec réduction de modèle.

Figure 2.47. Représentation (en échelle logarithmique) du nombre d’opérations total selon le niveau d'approximation.

Approximation

Figure 2.48. Représentation (en échelle log/log) du nombre d’opérations total selon la taille de la matrice de rigidité L : ronds : flops ILU ; triangles : flops GMRES ; carrés : flops multiplications des matrices ; étoiles :

nombre total de flops.

Voici enfin un Tableau résumant le facteur de gain de temps en terme de nombre d’opérations, ceci pour les seules étapes de résolution de l’équation et de projection en ondelettes :

Niveau d'approximation

ratio du nombre de flops sans / avec réduction de modèle 1 2 3 4.5 20.9 86.4

Tableau 2.4. Ratio du nombre de flops dans la résolution de l’équation sans / avec réduction de modèle.