• Aucun résultat trouvé

3.3.1 Complexité de la phase de pré-traitement.

Pour simplier l'analyse, on considère ici un environnement carré (Nx = Ny = 2m). De même, l'arbre binaire est construit en coupant les nodes en 2 MR-nodes ls de mêmes dimensions. Ainsi, le nombre de niveaux dans la pyramide est : L = 2 · log2(Nx).

Le calcul principal eectué lors du pré-traitement correspond au calcul de la matrice des ux internes (équation3.35) puis à l'estimation de la matrice de diu-sion. Le calcul de la complexité repose sur le calcul du nombre de multiplications de sous matrices à eectuer pour calculer la matrice de diusion du bloc k, à partir des équations (3.34). On exploite également les propriétés de symétrie des sous-matrices, qui sont liées à la propriété de réciprocité de la propagation et des

matrices élémentaires ParFlow. Cette symétrie permet d'écrire : σXY = σt ¯ Y ¯X, où ¯

X représente la direction opposée à la direction X, par exemple ¯W = E. Remar-quons que les sous-matrices de retour de ux (celles qui permettent le calcul d'un ux sortant par le côté où il est entré) n'ont pas de sous-matrice correspondante. La propriété ennoncé ci-dessus indique qu'elles sont symétriques : σEW = σt

EW. La complexité de calcul à chaque niveau l, en fonction de la parité de l est donnée par :

C(l) = O(19 · N2

x · 2q) si l = 2 · q C(l) = O(27 · Nx2· 2q−1)si l = 2 · q + 1

Le coût de calcul associé aux matrices de l'arbre binaire complet est donc donné par :

C(prep) = O(52 · Nx3) (3.42) En ce qui concerne la ressource mémoire, le stockage des matrices de diusion d'un MR-node bl

k (matrice de diusion + matrice interne) est égale à :

M (blk) = 13 · 2l· m (3.43) où m est l'unité mémoire nécessaire au stockage d'une variable complexe. La mémoire à chaque niveau de la pyramide est donc :

M (l) = 13 · Nx2 · m (3.44) D'où une mémoire totale de :

M (prep) = 26 · log2(Nx) · Nx2· m (3.45) Il est possible de réduire signicativement ces besoins en ressources mémoire. En eet, dans le calcul précédent, on a considéré que chaque MR-node possé-dait ses propres matrices. En réalité, lorsque 2 MR-nodes sont identiques, ils ont les mêmes matrices. Ainsi, dans le cas d'un espace complètement homogène et découpé régulièrement selon les hypothèses faites en début de section, un seul type de MR-node est déni par niveau dans la pyramide : les ressources mémoire nécessaires au niveau l − 1 sont égales à la moitié des ressources nécessaires au niveau l. On obtient Mmin(prep) = O(26N2

x). On peut donc écrire :

26 · Nx2· m < M (prep) < 26 · log2(Nx) · Nx2· m (3.46) Notons que cette optimisation par réutilisation des matrices de diusion peut réduire signicativement les besoins en mémoire, mais aecte assez peu la charge de calcul. En eet, ce sont les étages les plus élevés qui coûtent le plus cher en temps de calcul. Le nombre de MR-nodes est réduit par 2 à chaque niveau, mais la complexité de calcul par MR-node augmente d'un facteur 4. En réalité, le pre-mier MR-node (HeadNode), à lui seul, monopolise près de la moitié de la charge

de calcul du prétraitement. Concernant la mémoire, chaque niveau nécessite les mêmes ressources. Mais la ré-utilisation des matrices permet de réduire les be-soins des niveaux les plus bas. Dans le cas homogène et avec une réutilisation optimale, les premiers niveaux consommant plus que les derniers.

On imagine bien alors que toute optimisation de calcul et de stockage des MR-nodes de grande taille aura un impact signicatif sur les performances de la méthode.

3.3.2 Complexité de la phase montante de propagation.

La complexité de la phase montante n'est pas très élevée, car contrairement au pré-traitement et à la phase descendante, seul un MR-node par niveau est concerné. Le coût de calcul correspondant est :

C(up) = O(3 · Nx2) (3.47) Encore une fois, la moitié de la charge de calcul est consacrée au calcul de la dernière source équivalente.

3.3.3 Complexité de la phase descendante de propagation.

Au niveau de la phase descendante, la complexité associée à un MR-node est de 4 · 2l si l = 2 · q + 1 ou 6 · 2l si l = 2 · q donc la complexité à chaque niveau de la pyramide est constante et donnée par :

C(l) = O(6 · N2

x) si l = 2 · q C(l) = O(4 · Nx2) si l = 2 · q + 1

On peut donc déduire la complexité pour toute la pyramide : C(down) = O 10 · log2(Nx) · Nx2

(3.48)

3.3.4 Comparaison avec la méthode ParFlow standard.

La complexité de la méthode ParFlow, dans le domaine temporel et sans optimisation, est facilement calculée. En eet, l'implémentation par automate cellulaire conduit à 16 multiplications pour chaque noeud et pour chaque itéra-tion. Sachant que la propagation du front d'onde jusqu'à une distance de n pixels nécessite au minimum p(2).n itérations, la propagation d'une source à travers l'ensemble de l'environnement avec prise en compte des réexions multiples, né-cessite un nombre d'itérations supérieur à k · N. La valeur de k est dicile à déterminer et dépend de la précision recherchée. Il est au moins égal à quelques unités. Ainsi, le coût de calcul complet est donné par :

La phase de pré-traitement de la méthode MR-FDPF a une complexité équiva-lente. Par contre, la phase de propagation représente une charge de calcul essen-tiellement consacrée à la phase descendante qui est en O(N2· log(N )).

Ces résultats montrent un grand intérêt de la méthode MR-FDPF : En ayant déporté une grande partie des calculs dans la phase de pré-traitement, la com-plexité de propagation d'une source devient équivalente à quelques itérations seulement de la méthode temporelle. De plus, la solution obtenue est la solution exacte des équations ParFlow.

3.4 Méthodes de construction de l'arbre binaire.