1 %% Use the standard UP-methodology class
2 %% with French language.
4 %% You may specify the option 'twoside' or 'oneside' for
7 %% See the documentation tex-upmethodology on
8 %% http://www.arakhne.org/tex-upmethodology/
9 %% for details about the macros that are provided by the class and
10 %% to obtain the list of the packages that are already included.
12 \documentclass[french]{spimufcphdthesis}
14 %%--------------------
15 %% The TeX code is entering with UTF8
16 %% character encoding (Linux and MacOS standards)
17 \usepackage[utf8]{inputenc}
20 %% You want to use the NatBib extension
21 %\usepackage[authoryear]{natbib}
23 %%--------------------
24 %% Include the 'multibib' package to enable to
25 %% have different types of bibliographies in the
26 %% document (see at the end of this template for
27 %% an example with a personnal bibliography and
28 %% a general bibliography)
30 %% Each bibliography defined with 'multibib'
31 %% adds a chapter with the corresponding
32 %% publications (in addition to the chapter for
33 %% the standard/general bibliography).
35 %% There is no standard way to do include this type of
36 %% personnal bibliography.
37 %% We propose to use 'multibib' package to help you,
39 %\usepackage{multibib}
41 %% Define a "type" of bibliography, here the PERSONAL one,
42 %% that is supported by 'multibib'.
43 %\newcites{PERSO}{Liste de mes publications}
45 %% To cite one of your PERSONAL papers with the style
46 %% of the PERSONAL bibliography: \citePERSO{key}
47 %% To force to show one of your PERSONAL papers into
48 %% the PERSONAL bibliography, even if not cited in the
49 %% text: \nocitePERSO{key}
51 %% REMARK: When you are using 'multibib', you
52 %% must compile the PERSONAL bibliography by hand.
53 %% For example, the sequence of commands to run
54 %% when you had defined the bibliography PERSO is:
55 %% $ pdflatex my_document.tex
56 %% $ bibtex my_document.aux
58 %% $ pdflatex my_document.tex
59 %% $ pdflatex my_document.tex
60 %% $ pdflatex my_document.tex
62 %%--------------------
63 %% Add here any other packages that are needed for your document.
66 \newcommand{\MI}{\mathit{MaxIter}}
67 %\usepackage{subcaption}
70 %%--------------------
71 %% Set the title, subtitle, defense date, and
72 %% the registration number of the PhD thesis.
73 %% The optional parameter is the subtitle of the PhD thesis.
74 %% The first mandatory parameter is the title of the PhD thesis.
75 %% The second mandatory parameter is the date of the PhD defense.
76 %% The third mandatory parameter is the reference number given by
77 %% the University Library after the PhD defense.
78 \declarethesis[Sous-titre]{Titre}{17 septembre 2012}{XXX}
80 %%--------------------
81 %% Set the author of the PhD thesis
82 \addauthor[email]{Prénom}{Nom}
84 %%--------------------
85 %% Add a member of the jury
86 %% \addjury{Firstname}{Lastname}{Role in the jury}{Position}
87 \addjury{Incroyable}{Hulk}{Rapporteur}{Professeur à l'Université de Gotham City \\ Commentaire secondaire}
88 \addjury{Super}{Man}{Examinateur}{Professeur à l'Université de Gotham City}
89 \addjury{Bat}{Man}{Directeur de thèse}{Professeur à l'Université de Gotham City}
91 %%--------------------
92 %% Change style of the table of the jury
93 %% \Set{jurystyle}{put macros for the style}
94 %\Set{jurystyle}{\small}
96 %%--------------------
97 %% Add the laboratory where the thesis was made
98 %\addlaboratory{Laboratoire Waynes Industry}
100 %%--------------------
101 %% Clear the list of the laboratories
104 %%--------------------
105 %% Set the English abstract
106 \thesisabstract[english]{This is the abstract in English}
108 %%--------------------
109 %% Set the English keywords. They only appear if
110 %% there is an English abstract
111 \thesiskeywords[english]{Keyword 1, Keyword 2}
113 %%--------------------
114 %% Set the French abstract
115 \thesisabstract[french]{Ceci est le résumé en français}
117 %%--------------------
118 %% Set the French keywords. They only appear if
119 %% there is an French abstract
120 \thesiskeywords[french]{Algorithmes itératifs, Performance, Simulation, Simgrid, Grid Computing}
122 %%--------------------
123 %% Change the layout and the style of the text of the "primary" abstract.
124 %% If your document is written in French, the primary abstract is in French,
125 %% otherwise it is in English.
126 %\Set{primaryabstractstyle}{\tiny}
128 %%--------------------
129 %% Change the layout and the style of the text of the "secondary" abstract.
130 %% If your document is written in French, the secondary abstract is in English,
131 %% otherwise it is in French.
132 %\Set{secondaryabstractstyle}{\tiny}
134 %%--------------------
135 %% Change the layout and the style of the text of the "primary" keywords.
136 %% If your document is written in French, the primary keywords are in French,
137 %% otherwise they are in English.
138 %\Set{primarykeywordstyle}{\tiny}
140 %%--------------------
141 %% Change the layout and the style of the text of the "secondary" keywords.
142 %% If your document is written in French, the secondary keywords are in English,
143 %% otherwise they are in French.
144 %\Set{secondarykeywordstyle}{\tiny}
146 %%--------------------
147 %% Change the speciality of the PhD thesis
148 %\Set{speciality}{Informatique}
150 %%--------------------
151 %% Change the institution
152 %\Set{universityname}{Universit\'e de Franche-Comt\'e}
154 %%--------------------
155 %% Add the logos of the partners or the sponsors on the front page
156 %\addpartner[image options]{image name}
158 %%--------------------
159 %% Clear the list of the partner/sponsor logos
162 %%--------------------
163 %% Change the header and the foot of the pages.
164 %% You must include the package "fancyhdr" to
165 %% have access to these macros.
179 %%--------------------
180 % Declare several theorems
181 \declareupmtheorem{mytheorem}{My Theorem}{List of my Theorems}
183 %%--------------------
184 %% Change the message on the backcover.
185 %\Set{backcovermessage}{%
191 %%--------------------
192 %% The following line does nothing until
193 %% the class option 'nofrontmatter' is given.
196 %%--------------------
197 %% The following line permits to add a chapter for "acknowledgements"
198 %% at the beginning of the document. This chapter has not a chapter
199 %% number (using the "star-ed" version of \chapter) to prevent it to
200 %% be in the table of contents
201 \chapter*{Remerciements}
203 %%--------------------
204 %% Include a general table of contents
207 %%--------------------
208 %% The content of the PhD thesis
214 \part{PARTIE I: Contexte scientifique et revue de l'état de l'art}
216 \chapter{Cadre de travail et contexte scientifique}
218 \section{Classe des algorithmes itératifs parallèles à large échelle dans une grille de calcul}
220 Dans le cadre de ces travaux, nous nous sommes intéressés particulièrement
221 sur la performance d'une classe d'algorithmes
222 parallèles dits itératifs. De plus en plus, cette méthode itérative
223 est utilisée pour résoudre des problèmes dans différents domaines
224 scientifiques tels que la mécanique, la prévision du temps, le traitement
225 d'images ou encore l'économie financière.
226 Elle consiste à appliquer, contrairement à la méthode de résolution
227 « directe », à partir d'une valeur initiale $X_0$ une
228 transformation à un vecteur inconnu de rang n par des itérations successives
229 afin de s'approcher par approximation à la solution
230 recherchée X{*} avec une valeur résiduelle la plus réduite possible.
233 X^{k+1} = \text{f ( } X^k \text{ ), k = 0,1, \dots{} }
236 où chaque $x_k$ est un vecteur à n dimension et f une fonction de $R^n$ vers
239 La solution du problème sera donc le vecteur X{*} tel que X{*} = f
240 (X{*}), c'est-à-dire X{*} est un point fixe de f.
242 L'exécution en parallèle d'un tel algorithme
243 consiste au découpage (partitionnement) du problème en plus petits
244 morceaux (ou blocs) et d'assigner chaque bloc à une
245 unité de calcul. Chaque processeur tourne le même algorithme de façon
246 concourante jusqu'à la détection de la convergence
247 locale qui peut être obtenue soit par l'atteinte d'un
248 nombre maximum fixé d'itérations soit que la différence
249 entre les valeurs du vecteur inconnu entre deux itérations successives est devenue
250 inférieure à la valeur résiduelle convenue. Cette condition de convergence
251 locale peut être écrite comme suit :
253 (k\leq \MI) \text{ or } (\|X_l^k - X_l^{k+1}\|_{\infty}\leq\epsilon)
255 La convergence globale sera déclarée lorsque tous les processeurs
256 ont atteint leur convergence locale. De façon générale, plusieurs
257 travaux ont démontré la convergence de ces méthodes itératives pour
258 la résolution de systèmes linéaires ou non linéaires avec un taux
259 de convergence élevé {[}7, 8{]}. Lors de l'exécution
260 dans chaque bloc de calcul, l'algorithme peut demander l'échange
261 de données comme des résultats intermédiaires par exemple entre des
262 processeurs voisins avant d'entamer une nouvelle itération.
263 Les sections suivantes vont détailler les notions liées à la résolution
266 \subsection{Partitionnement du problème}
268 Comme expliqué plus haut et appliquant le principe du "diviser pour regner", le problème de résolution d'un
269 algorithme itératif parallèle commence par un découpage de la matrice $n \times n$
270 en entrée en plus petits blocs dont le nombre dépend du nombre
271 de processeurs disponibles. On parle de « décomposition de domaine
272 » en considérant les données en priorité en opposition à la « décomposition
273 fonctionnelle » où le partitionnement se base sur le calcul : diviser
274 le calcul en des tâches indépendantes assignées aux processeurs. La
275 figure \figref{decoupage} présente un exemple de découpage en domaines de la
276 matrice initiale entre deux clusters constitués chacun de 18 processeurs, soit un total de 36 processeurs.
278 \mfigure[h]{width=8cm, height=8cm}{"3D data partitionning btw 2 clusters"} {Partitionnement : Découpage d'une matrice tridimensionnelle entre deux clusters formés de 18 processeurs chacun} {decoupage}
280 \mfigure[h]{width=8cm, height=8cm}{"1D-2D-3D Domain decomposition"} {Partitionnement : Décomposition en domaines 1D, 2D et 3D} {Decompo}
283 %\begin{subfigure}{0.5\textwidth}
284 %\includegraphics[width=6cm, height=6cm]{"3D data partitionning btw 2 clusters"}
285 %\caption{Découpage d'une matrice tridimensionnelle entre deux clusters formés de 18 processeurs chacun}
288 %\begin{subfigure}{0.5\textwidth}
289 %\includegraphics[width=1\linewidth, height=5cm]{"1D-2D-3D Domain decomposition"}
290 %\caption{Décomposition en domaines 1D, 2D et 3D}
293 %\caption{Partitionnement du problème}
296 Chaque cluster va prendre en charge un bloc de 18 "sous-domaines". Chaque
297 processeur $P_i$ tournera l'algorithme sur le cube qui
298 lui est assigné. Les sous domaines s'échangent des
299 données par leurs points périphériques {[}9{]} au niveau du cluster mais
300 aussi entre les clusters en suivant une organisation logique d'un
301 anneau virtuel dont les noeuds sont les processeurs $P_i$.
303 Une fois partitionnée en m blocs, la relation reccurente de l'équation \eqref{eq:1} peut
306 x_{k+1} = (x_1^k, x_2^k, \dots , x_n^k), k=1,\dots n
308 ou en termes de blocs :
310 X_{k+1} = (X_1^k, X_2^k, \dots , X_n^k), k=1,\dots m
312 Donc, on peut écrire :
318 \iff ( \exists F_k ) (X_1^{k+1} ,X_2^{k+1} , \dots{}, X_m^{k+1}) = (F_1(X_k), F_2(X_k), \dots , F_m(X_k))
322 X_i^{k+1} = F_i (X^k) = Fi ( X_1^k , X_2^k , \dots{} , X_m^k)\>pour \>i=1,\dots,k
324 L'exemple donné montre un partitionnement « naturel
325 » du problème initial par un découpage uniforme avec des blocs de même taille. Il met en exergue deux facteurs importants
326 à tenir en compte lors de cette opération :
328 \item [$\bullet$] essayer de répartir
329 uniformément la charge assignée à chaque processeur : effectivement,
330 un déséquilibre de charge entre les unités de calcul peut impacter
331 négativement la performance globale du système;
332 \item[$\bullet$] réduire au maximum
333 les communications entre les processeurs : ces temps d'échange
334 coûtent aussi chers au niveau de la performance globale.
337 type de l'algorithme, on peut faire un classement en
338 trois catégories {[}21{]} selon le partitionnement ou la décomposition
339 de domaine choisie (Figure \figref{Decompo}) :
341 \item[$\bullet$] 1D où la matrice est découpée
342 suivant des briques dont deux dimensions de longueur n et la dernière plus courte que n.
343 \item [$\bullet$] 2D avec des briques dont une dimension est de longueur n et les
344 deux autres plus courtes que n;
345 \item [$\bullet$] et enfin, 3D avec des briques dont les
346 3 dimensions sont plus courtes que n.
349 \subsection{Modes d'exécution synchrone et asynchrone}
351 Lors de l'exécution des algorithmes itératifs parallèles
352 sur un environnement de type grille de calcul, le temps de communication
353 résultant des échanges de données entre les unités de calcul est aussi
354 important que le temps de calcul lui-même. En effet, un ratio montrant
355 un équilibre entre ces deux temps constitue un des objectifs dès le
356 partitionnement du problème. Le temps de communication est impacté
357 sur la façon dont les échanges sont effectués.
359 \mfigure[h]{width=8cm, height=8cm}{"Synchronous iterations model"} {Modèle de communication synchrone} {sync}
361 \mfigure[h]{width=8cm, height=8cm}{"Asynchronous iterations model"} {Modèle de communication asynchrone} {async}
364 %\begin{subfigure}{0.5\textwidth}
365 %\includegraphics[width=5cm, height=5cm, scale=3]{"Synchronous iterations model"}
366 %\caption{Modèle de communication synchrone}
369 %\begin{subfigure}{0.5\textwidth}
370 %\includegraphics[width=5cm, height=5cm, scale=3]{"Asynchronous iterations model"}
371 %\caption{Modèle de communication asynchrone}
374 %\caption{Modèles de communication}
378 D'une part, ces paquets de données peuvent être transférés
379 de façon « synchrone » : dans ce cas, une coordination de l'échange
380 est assurée par les deux parties. A la fin de chaque itération, l'émetteur,
381 une fois la poignée de main établie, envoie les données et attend
382 jusqu'à la réception d'un accusé de
383 réception par le récepteur. L'algorithme même est en
384 mode synchrone parce qu'une étape de synchronisation
385 de tous les processeurs est nécessaire avant d'entamer
386 une nouvelle itération. La figure \figref{sync} montre les actions dans
387 le temps lors d'un échange en mode synchrone entre
388 deux processeurs. Les flèches montrent la date d'envoi
389 par $P_1$ et la date de réception du paquet par $P_2$. On parle ici de mode
390 de communication « bloquante » : la nouvelle itération ne peut commencer
391 tant que tous les processus n'ont pas fini leurs communications.
393 D'autre part, l'échange de données peut
394 s'effectuer en mode « asynchrone ». Dans ce cas, l'émetteur
395 peut envoyer de l'information au destinataire à tout
396 moment et aucune synchronisation n'est nécessaire.
397 Chaque processeur travaille avec les données qu'il
398 reçoit au fil du temps. La communication est ici non bloquante. La
399 conséquence immédiate de ce mode de communication est l'absence
400 des périodes où le traitement est arrêté (CPU stalled ou idle) parce
401 qu'il doit attendre l'accusé de réception
402 du récepteur (Figure \figref{async}). En mode asynchrone, le temps entre chaque
403 itération peut varier notablement dû à la différence éventuelle de
404 la puissance de chaque processeur ou encore de la performance des
405 différents réseaux de communication utilisés. {[}7{]} montre à travers
406 des algorithmes itératifs classiques les intérêts de la mise en oeuvre
407 de communication asynchrone lors de la résolution mais aussi les éventuels
408 inconvénients. Parmi les avantages de ce mode de communication, la
409 réduction du temps de synchronisation entre processeurs peut impacter
410 positivement le temps global d'exécution surtout en
411 environnement hétérogène. De même, le chevauchement du calcul avec
412 la communication des données peut aussi améliorer la performance de
413 l'application. Enfin, un partitionnement lors de de
414 la décomposition du domaine tenant compte de l'absence
415 de synchronisation en mode asynchrone peut aussi contribuer à la performance
416 en répartissant efficacement le calcul. Les inconvénients de l'asynchronisme
417 peuvent venir de la détection de la convergence globale étant donné
418 qu'il n'y a pas de synchronisation des
419 opérations. L'arrêt doit être décidé après une forme
420 de communication globale à un certain point de l'algorithme
421 ; il peut se faire lors de la communication inévitable entre processus
422 pour annoncer la convergence locale. Un autre problème est aussi la
423 tolérance aux pannes quoique cette défaillance peut aussi concerner
424 le mode synchrone : si un des processus contribuant dans la résolution
425 du problème se plante, tout le processus itératif peut s'écrouler
426 si un mécanisme de reprise sur panne est mis en place.
428 \section{Méthodes de résolution parallèles du problème de Poisson et de
429 l'algorithme two-stage multisplitting de Krylov}
431 \subsection{Algorithme de Jacobi}
433 \subsection{Méthode de résolution GMRES}
437 Version « two-stage »
439 \subsection{Solveur multisplitting}
445 \section{SIMGRID/SMPI : Simulateur d'exécution d'algorithmes
446 parallèles MPI dans une grille de calcul}
448 \subsection{MPI - Message Passing Interface}
450 \subsection{Simulateur SIMGRID}
452 \section{Motivations}
454 \section{Conclusion partielle}
457 \chapter{Etat de l'art et travaux de recherche associés}
459 \section{Concepts et définitions}
460 Dans cette section, des concepts et des définitions relatifs à nos
461 travaux sont passés en revue.
463 \subsection{Performance de l'application parallèle et scalabilité}
465 La performance d'une application dans un environnement
466 distribué peut être définie comme « la capacité de réduire le temps
467 pour résoudre le problème quand les ressources de calcul augmentent
468 » {[}20{]}. L'objectif est de minimiser le
469 temps d'exécution globale de l'application
470 en ajoutant des ressources supplémentaires (processeurs, mémoire,
471 \dots ). D'où la notion de « scalabilité » ou "montée
472 en charge" ou encore "passage à l'echelle" dont l'objectif principal est d'accroitre
473 la performance quand la complexité ou la taille du problème augmentent.
474 Comme nous allons voir tout au long de ce chapitre, deux catégories
475 de facteurs concourent à la difficulté de la prédiction des applications
476 parallèles en considérant leur performance après la montée en charge
477 des ressources : d'une part, on peut énumérer les facteurs
478 liés à l'écosystème d'exécution tels
479 que le nombre de processeurs, la taille de la mémoire et de sous-système
480 de stockage, la latence et la bande passante des réseaux de communication
481 ; d'autre part, les facteurs liés au code lui-même
482 impactent aussi la performance de l'application affectant
483 ainsi la prédiction : il s'agit par exemple de la fréquence
484 de la communication et de la synchronisation, la faible parallélisation
485 mais aussi le mauvais ordonnancement des tâches (équilibrage de charge)
488 Afin de quantifier la performance d'un code, plusieurs
489 métriques ont été définies mais le temps d'exécution
490 global nécessaire pour atteindre la fin du programme reste le plus
491 simple. On peut écrire :
495 T_{exec} = T_{calc} + T_{comm} + T_{surcharge}
498 \indent\indent$T_{exec}$ : Temps d'exécution global \\
499 \indent\indent$T_{calc}$ : Temps de calcul \\
500 \indent\indent$T_{comm}$ : Temps de communication \\
501 \indent\indent$T_{surcharge}$ : Temps de surcharge.
504 Le temps de calcul représente le temps pris par le code pour effectuer
505 des calculs tandis que le temps de communication enregistre le temps
506 des échanges de données ou d'instructions entre les
507 processeurs. Le temps de surcharge comprend le temps pris lors des
508 initialisations telles que la création des threads au début du programme
509 mais aussi le temps de fermeture de l'application à
510 la fin. En général, le temps de surcharge est négligeable par rapport
511 aux temps de calcul et de communication.
513 Des métriques liées directement à la performance du processeur sont
514 bien connues telles que le MIPS (Millions d'instructions
515 par seconde), FLOPS (Floating Point Operations per second), SPECint
516 ou encore SPECfp qui sont des benchmarks pour évaluer la performance
517 du processeur sur des opérations arithmétiques respectivement sur
518 des entiers ou des nombres réels. Par ailleurs, plusieurs métriques
519 rapportées à la performance de l'application parallèle
520 ont été définies mais nous allons retenir les trois les plus utilisées,
521 à savoir le « speedup », « l'efficacité » du code et
524 Le speedup est le rapport entre le temps utilisé pour l'exécution
525 séquentielle du code et le temps pour son exécution en parallèle.
526 Ce rapport peut être obtenu aussi comme le ratio entre le temps d'exécution
527 du code sur un processeur et le temps d'exécution avec
528 n processeurs. Ainsi, il mesure le gain escompté en résolvant le problème
529 en parallèle au lieu d'un lancement en séquentiel.
532 S(n) = T_{Exec\_Seq} / T_{Exec\_Par}(n)
535 \indent\indent S(n) : speedup pour n processeurs \\
536 \indent\indent n : nombre de processeurs \\
537 \indent\indent $T_{Exec\_Seq}$ le temps d'exécution en mode séquentiel \\
538 \indent\indent $T_{Exec\_Par}$ le temps d'exécution en en parallèle.
540 L'efficacité E(n) représente la performance de chaque unité
541 de calcul. Elle s'obtient en divisant le speedup par
542 le nombre de processeurs n. On peut aussi l'écrire
543 comme le rapport entre le temps d'exécution séquentielle
544 et le temps d'exécution parallèle multiplié par le
545 nombre de processeurs n.
549 = T_{Exec\_Seq} / ( n \times T_{Exec\_Par}(n) )
552 La loi de Amdahl donne une limite du speedup maximum qu'on
553 peut obtenir avec un nombre de processeurs n donné. Elle stipule que
554 si f compris entre 0 et 1 est la fraction du temps de la partie séquentielle
559 S(n) \leqslant \dfrac{1}{f+ \dfrac{1-f}{n}}
562 Pour un système parallèle « idéal », le speedup est égal à n et l'efficacité
563 à 1. Dans la pratique, le speedup est toujours inférieur à n avec
564 une limite haute dûe à la loi de Amdahl et l'efficacité
565 a une valeur entre 0 et 1. On peut démontrer que l'efficacité
566 est une fnction décroissante du nombre de processeurs n tandis qu'elle
567 est une fonction croissante de la taille du problème.
569 Dans le cadre de nos travaux, nous avions introduit une métrique utilisée
570 lors de la comparaison de différentes variantes d'algorithmes
571 résolvant le même problème exécutés en différents mode de communication
572 (synchrone ou asynchrone). Ainsi, le « gain relatif » entre l'exécution
573 de deux variantes de code résolvant un problème donné est le ratio
574 entre le temps d'exécution global du premier algorithme
575 et le temps d'exécution global du deuxième algorithme
576 selon le mode retenu pour chaque code.
580 G_{relatif} = T_{Exec\_Algo\_1} / T_{Exec\_Algo\_2} \times {100}
584 \subsection{Taux d'erreur lors de la prédiction}
586 Lors de l'exercice de prédiction sur la performance
587 d'une application parallèle, un modèle est construit
588 à partir des observations passées des
589 variables considérées (données empiriques observées)afin de pouvoir prédire les résultats (données calculées) pour des nouvelles valeurs de ces variables. L'objectif
590 lors de cette modélisation est de minimiser l'écart
591 entre les valeurs calculées théoriques et les valeurs réelles observées.
593 Dans le cadre de la classe des algorithmes numériques itératifs consacrée
594 à ces travaux, un autre taux d'erreur $\epsilon$ est déterminé
595 d'avance et qui sert à détecter la convergence locale
596 de l'algorithme {[}9{]}. A chaque itération, la différence
597 entre la valeur approchée calculée, solution du problème, et celle obtenue
598 à l'itération précédente est calculeé : si elle est
599 inférieure au taux d'erreur accepté, l'algorithme
600 s'arrête en ayant atteint la convergence sinon, on
601 repart pour une nouvelle itération.
603 A l'itération k, la convergence est atteinte quand
606 (\|X_l^k - X_l^{k+1}\|_{\infty}\leq\epsilon)
609 \subsection{Weak contre strong scaling}
611 Un des objectifs de nos travaux consistent à exécuter les algorithmes
612 choisis en simulant leur exécution sur des plateformes de plus en
613 plus larges avec un nombre de processeurs et de cores de plus en plus
614 grand. Deux modes existent pour cette montée en charge donnant des résultats différents
615 : le « weak » et le « strong » scaling.
617 La différence entre ces deux modes repose sur la variation de la taille
618 du problème lors de la montée en charge (scaling). Pour le « weak
619 » scaling, on essaie d'observer le comportement du
620 programme en gardant le même nombre d'éléments à traiter
621 par processeur ou core. Dans ce cas, les ressources
622 de calcul additionnelles
623 va augmenter proportionnellement à la taille du problème en entrée. Ainsi, la problématique ici est de résoudre un problème de plus grande taille. Par ailleurs, le « strong » scaling
624 essaie de résoudre un problème donné plus vite. Ainsi, dans ce cas,
625 la taille du problème en entrée reste constante même si on adjoint
626 une capacité plus grande aux unités de calcul.
628 \mfigure[h]{width=8cm, height=8cm}{"Weak vs Strong scaling"} {Weak vs Strong scaling: Temps d'exécution et Speedup} {scaling}
631 La figure \figref{scaling} montre que le temps d'exécution décroit (resp. reste constant) quand le nombre de processeurs augmente en strong mode (resp. en weak mode). De même, le speedup croit avec le nombre de processeur en strong mode tandis qu'il reste constant en weak mode.
633 \section{Problématique sur la prédiction à large échelle de la performance des applications}
635 La prédiction de la performance des applications parallèles à large
636 échelle constitue ces dernières années une des préoccupations majeures
637 des scientifiques et des utilisateurs des systèmes de calcul à haute
638 performance. En effet, en considérant le coût de lancement nécessaire
639 mais aussi le temps d'exécution imparti pour une telle
640 application, il est toujours d'intérêt de disposer
641 d'un outil ou d'un moyen afin de connaître
642 le comportement de l'application en montant en charge. Pour cela, il s'agit
643 d'estimer le temps total d'exécution $T_{exec}$ dans ces conditions. De plus,
644 dans le cadre d'un calcul sur la grille,l'objectif est de
645 déterminer la configuration idéale, en termes de blocs et
646 de nombre de noeuds (processeurs, coeurs) par bloc, pour obtenir le
647 meilleur coût mais aussi le temps optimal d'exécution
650 Dans ce chapitre, dans un premier temps, les problématiques et difficultés
651 inhérentes à cet exercice de prédiction de la performance des applications
652 parallèles sont abordées. Ensuite, nous allons passer en revue les
653 solutions possibles apportées à ces problèmes.
655 De prime abord, on peut diviser en deux grands groupes, selon leurs
656 objectifs, les travaux relatifs à la prédiction de la performance
657 en environnement parallèle et de calcul à haute performance.
659 D'une part, la prédiction peut viser l'objectif
660 de la conception, le développement et la mise au point de systèmes
661 qui n'existent pas encore physiquement. Cette catégorie
662 regroupe entre autres la conception de nouvelles architectures de
663 matériels (CPU, Mémoire, Stockage) {[}\dots {]} mais aussi par exemple,
664 la mise en oeuvre d'une nouvelle infrastructure de réseaux
665 de communication {[}\dots {]}. Plusieurs utilisations peuvent être
666 exploitées pour ce type de prédiction. En effet, outre le calibrage
667 de systèmes pour une exécution optimale, il permet le débogage et
668 la mise au point des applications avec un ensemble de contraintes,
669 que ce soit matérielles ou logicielles {[}..{]}. Notons tout de suite
670 que cette dernière application sur le réseau a fait l'objet
671 de nombreux travaux ces dernières années, permettant de déterminer
672 ou d'estimer d'avance la performance
673 et l'efficacité de la solution future projetée et éventuellement
674 de corriger et d'améliorer les imperfections.
676 D'autre part, la prédiction de la performance d'une
677 application parallèle se porte sur la détermination du temps d'exécution
678 de la dite application en montant en charge sur une large échelle.
679 Encore une fois, dans ce cas aussi, on ne dispose pas de l'environnement
680 d'exécution cible mais on essaie de déterminer quel
681 serait le temps total, donc le coût imputé au lancement de l'application
682 sous diverses conditions. Ces dernières sont déterminées par plusieurs
683 facteurs dont les principaux sont les paramètres d'entrée
684 de l'application tels que la taille du problème à résoudre
685 mais aussi les caractéristiques et la puissance globale intrinsèque
686 de la grille de calcul de lancement : nombre de blocs, de processeurs
687 / coeurs, les paramètres de la capacité du réseau de communication
688 inter et intra-noeuds de la grille, \dots{} Ainsi, une telle prédiction
689 permet de conduire une analyse « what-if » du comportement de l'application
690 si par exemple, on va multiplier par 10 ou 100 la taille du problème
691 en entrée, mais aussi si on double la capacité de l'environnement
692 cible en ajoutant d'autres blocs à la grille ou en
693 apportant plus de processeurs dans chaque bloc. Les travaux rapportés
694 dans cette thèse se focalisent plutôt sur cette seconde catégorie
695 de prédiction de la performance d'applications spécifiquement
696 écrites en MPI dans un environnement de grille de calcul.
698 \subsection{Facteurs liés à l'écosystème}
700 La prédiction de la performance des applications parallèles approchant
701 le plus possible de la réalité avec un taux d'erreur
702 minimal dépend de plusieurs facteurs pouvant avoir des impacts
703 décisifs sur les résultats. En effet, à titre d'exemple,
704 la modification de la topologie ou des paramètres de l'infrastructure
705 du réseau de communication tels que la latence ou la taille de la
706 bande passante aura inévitablement des conséquences sur la performance
707 globale de l'application parallèle. En donnant un autre
708 exemple, il est clair que la montée en charge en augmentant la taille
709 du problème avec une plus grande capacité de calcul proposant un plus
710 grand nombre de processeurs ou de coeurs modifiera la performance
711 de l'application. Ainsi, de façon générale, plusieurs
712 problématiques se posent quant au lancement d'une application
713 parallèle dans une grille de calcul mais aussi, plusieurs facteurs
714 influencent directement le comportement et la performance du système.
715 Nombreux travaux ont déjà proposé des modèles de prédiction à large
716 échelle sur la performance du code parallèle avec un taux d'efficacité
717 plus ou moins acceptable. Certains de ces modèles seront détaillés
718 dans le paragraphe 2.4.
720 Les scientifiques et les utilisateurs désirant lancer l'exécution
721 d'un programme en environnement parallèle ont tous
722 été confrontés à la même problématique de mise à disponibilité de
723 l'environnement d'exécution. En effet,
724 la réservation des ressources nécessaires pour lancer le système n'est
725 pas toujours immédiate mais en plus, le coût peut ne pas être négligeable
726 dans un contexte de rareté des machines super puissantes pourtant
727 très sollicitées par différents acteurs {[}\dots {]}. Cette problématique
728 peut être parfois accentuée par la non disponibilité de l'infrastructure
729 cible parce que justement, les résultats obtenus par le lancement
730 de l'application qui pourra déterminer les caractéristiques
731 techniques de l'environnement cible. Ainsi, cette contrainte
732 majeure doit être levée durant tout le cycle de vie de développement
733 de l'application. En effet, les coûteux développements
734 et écritures du code de l'application, les opérations
735 répétitives lors de sa mise au point ainsi que les tests itératifs
736 de lancement requièrent un environnement réel disposant de la capacité
737 nécessaire à ces opérations, ce qui n'est pas évident.
738 Un autre facteur lié à cette problématique a toujours été aussi l'estimation
739 à l'avance de cette capacité de calcul nécessaire afin
740 d'avoir un environnement le plus adéquat afin d'éviter
741 le gaspillage en cas de surestimation ou l'échec d'exécution
742 en cas de sous-estimation. Cette estimation concerne les ressources
743 primaires requises telles que le processeur, la taille mémoire DRAM
744 et cache ainsi que le sous-système de stockage pour la capacité de
745 calcul d'une part mais aussi les paramètres du réseau
746 de communication (local ou distant) pour le temps de communication
747 et d'échange de messages d'autre part.
748 L'architecture inhérente à la grille de calcul composée
749 d'entités reliées par des réseaux distants ajoute une
750 autre considération pour la communication entre les processus parallèles
751 sur le caractère hétérogène de l'infrastructure que
752 ce soit la puissance de calcul des serveurs (différents types de processeurs)
753 que le type des liaisons existants entre les blocs de la grille (réseaux
754 hétérogènes). En effet, les environnements complexes de type grille
755 de calcul actuels sont composés généralement de machines physiques
756 dotées de processeurs multi-coeurs de différentes architectures (niveau
757 de cache, latence entre processeurs, \dots ). De plus, en analysant
758 la structure du réseau de communication dans la grille, on peut distinguer
759 $(1)$ d'abord, les échanges internes au niveau d'un
760 élément d'un bloc (entre les coeurs d'un
761 processeur et entre les processeurs d'un même serveur
762 physique), (2) ensuite, les échanges « intra-blocs » caractérisant
763 le trafic entre les différents éléments d'un bloc et
764 (3) enfin, les échanges « inter-blocs » définissant la communication
765 entre les blocs de la grille. Tant au niveau de leur topologie qu'en
766 termes d'efficacité, ces trois niveaux de communication
767 peuvent présenter des caractéristiques complètement différentes et
768 hétérogènes. Ainsi, les deux premiers réseaux sont implémentés généralement
769 dans un contexte de réseau local avec un temps de latence très court
770 et une bande passante large. Tandis que le réseau de liaison entre
771 les blocs de la grille peuvent être de type distant (lignes spécialisées
772 distantes, canaux satellites de communication, réseau de type Internet,
773 \dots ) donc d'une efficacité moindre en termes de
774 latence et de bande passante mais aussi sujet à des perturbations
775 diverses (Figure \figref{cpumulti}). Ces aspects liés à l'architecture
776 de grille de calcul rendent la prédiction de la performance des applications
777 parallèles plus difficiles. En effet, une surcharge élevée due à des
778 perturbations sur le réseau inter-blocs de la grille peut fausser
779 complètement les résultats de la prédiction du temps de communication
780 global de l'application.
783 \subsubsection{Facteur architecture des processeurs}
785 Un autre facteur ayant un impact sur le temps d'exécution
786 global est d'une part, le modèle d'architecture
787 des processeurs de calcul et d'autre part, la puissance
788 intrinsèque de ces derniers.
790 La course à la puissance nécessaire aux applications de calcul de
791 haute performance ne cesse de s'accélérer de plus en
792 plus vite exigeant une capacité de calcul de plus en plus grande.
793 C. Willard {[}12{]} résume ce phénomène en disant que lorsqu'un
794 problème - la conception d'un pont par exemple -
795 est résolu, la solution trouvée n'est plus utile parce
796 qu'on ne va pas refaire la conception. On passe généralement
797 à un problème plus complexe - la conception d'un
798 autre ouvrage plus complexe par exemple. La conséquence de cette course
799 (actuellement du pentascale vers l'exascale) a suscité
800 le développement des architectures de processeurs multi-coeurs dont
801 l'accroissement de la puissance a dépassé la traditionnelle
802 loi de Moore (renvoi). De plus, des co-processeurs spécialisés et
803 autres accélérateurs (GPU : Graphic Processing Units {[}{]}) ont été
804 adjoints aux processeurs multi-coeurs pour améliorer le temps de calcul.
805 Une autre architecture variante du multi-coeurs est le MIC (Many Integrated
806 Core) {[}Intel Xeon Phi{]}. Ce type d'unité de calcul
807 joue au départ le rôle de co-processeur pour les applications à haute
808 intensité de calcul. Ainsi, plusieurs coeurs ont été pressés au niveau
809 du processeur (« socket ») emmenant un parallélisme au niveau de la
810 puce. La Figure~\ref{fig:4} donne un aperçu de l'architecture
811 d'un processeur multi-coeurs.
813 \mfigure[h]{width=8cm, height=8cm}{"Architecture des CPU multi-coeurs"} {Architecture des CPU multicoeurs} {cpumulti}
816 telle entité de calcul repose sur la vitesse d'accès
817 des coeurs aux données en mémoire. En effet, elle est dotée d'un
818 bus rapide et une hiérarchie de cache mémoire beaucoup plus rapide
819 d'accès que la RAM. En termes d'architecture,
820 la classification de Flynn (1972) {[}{]} a créé quatre catégories
821 de machines parallèles selon les flots de données et les flots d'instructions: SISD (Single instruction, single data), SIMD (Single instruction,
822 multiple data), MISD et MIMD (Multiple instruction, multiple data).
823 Cette dernière classe regroupant les machines parallèles généralistes
824 actuelles se décline en trois sous-catégories :
826 \mfigure[h]{width=8cm, height=8cm}{"MIMD Distributed Memory"} {Modèle MIMD Distribué} {MIMDDM}
828 \mfigure[h]{width=8cm, height=8cm}{"MIMD Shared memory - SMP"} {Modèle MIMD partagé} {MIMDSM}
830 \mfigure[h]{width=8cm, height=8cm}{"MIMD Hybride"} {Modèle MIMD hybride} {MIMDHY}
834 \item [$\bullet$] - Machine MIMD à mémoire partagée (Figure \figref{MIMDSM}) : Les unités de calcul
835 accède à la mémoire partagée via un réseau d'interconnection
836 (généralement, de type GigabitEthernet (renvoi) ou Infiniband (renvoi)).
837 Il existe trois types d'implémentation : le crossbar,
838 le Omega-Network et le Central Databus.
840 \item [$\bullet$] Machine MIMD à mémoire distribuée (Figure \figref{MIMDDM}) : Chaque unité de
841 calcul est doté de son espace mémoire propre. Un réseau d'interconnexion
842 intègre l'ensemble assurant la communication entre
843 ces unités. Il existe trois types de machines MIMD à mémoire distribuée: les hypercubes, les fat trees et les autres.
845 \item [$\bullet$] Machine MIMD hybride (Figure \figref{MIMDHY}) : Dans ce cas, le système est la
846 combinaison des deux modèles précédents : un ensemble de processeurs
847 partage un espace mémoire et ces groupes sont interconnectés par un
852 A titre d'exemple de machines parallèles, le site Top500.org
853 {[}14{]} classe suivant différents critères les plus performantes.
854 Ainsi, la figure \figref {power} montre l'évolution de la puissance
855 de calcul mondiale dont le top actuel développe un pic de performance
856 théorique proche de 50 PetaFlops (33 Linpack PetaFlops (renvoi)) avec
857 3.120.000 cores ( 16 noeuds avec des processeurs de 2x12 cores par
858 noeud) et plus de 1.240.000 Gb de mémoire (64 Gb par noeud) avec des
859 accélérateurs 3 $\times$ Intel Xeon Phi par noeud. Il s'agit
860 de la machine Tianhe-2 (MilkyWay-2) de la National Super Computer
861 Center à Guangzhou en Chine {[}15{]}. A la tendance actuelle, l'atteinte
862 de l'exaflops n'est pas loin.
864 \mfigure[h]{width=8cm, height=8cm}{"Evolution de la puissance de calcul mondiale"} {Evolution de la puissance de calcul mondiale} {power}
866 Pour arriver à de telles puissances, diverses architectures de processeurs
867 ont vu le jour ces dernières années. Outre l'Intel
868 Xeon Phi cité plus haut, les processeurs basés sur les circuits intégrés
869 FPGA (Field Programmable Gate Array) montrent une flexibilité efficace
870 pour s'adapter par configuration au type d'applications
871 à traiter {[}14{]}. En effet, cette architecture permet la programmation
872 de la « matrice de blocs logiques » interconnectée par des liaisons
873 toutes aussi programmables. Cette possibilité de programmation des
874 circuits et des interconnexions entraine aussi la réduction de la
875 consommation d'énergie. Par ailleurs, les unités GPU
876 (Graphics Processing Unit) sont initialement des co-processeurs produits
877 par AMD et NVIDIA pour des applications à fort rendu graphique, libérant
878 ainsi la charge au processeur. Par la suite, elles ont été complètement
879 programmables et se sont montrées très efficaces pour les algorithmes
883 \subsubsection{Facteur : Mémoire et stockage}
885 Les différentes architectures de processeurs parallèles vues plus
886 haut se trouvent toutes confrontées au problème de chargement de données
887 à traiter en mémoire. Ainsi, elles se sont dotées de contrôleurs de
888 mémoire incorporés mais aussi divers niveaux de caches pour faire
889 face à cette différence de vitesse de traitement entre les processeurs
890 et les mémoires dynamiques. Par exemple, les machines SIMD utilisent
891 des registres de communication internes pour communiquer avec les
892 autres CPUs. Pour les machines de type MIMD où différentes tâches
893 sont exécutées par chaque processeur à un instant donné entraînant
894 ainsi une synchronisation obligatoire pour des échanges de données
895 entre processeurs, ces derniers peuvent exploiter la mémoire partagée
896 pour effectuer ces transferts ou prévoir des bus dédiés à cette fin
899 Par ailleurs, les mémoires, non intégrées au processeur, et les sous-systèmes
900 de stockage constituent aussi un facteur important ayant un impact
901 sur le temps d'exécution de l'application
902 parallèle. En effet, les mémoires externes sont utilisées soit pour
903 échanger des données entre les CPU, soit pour accéder à la zone mémoire
904 pour lire, écrire ou mettre à jour des données. Dans ce domaine, en
905 considérant les architectures parallèles MIMD, on peut classer en
906 deux grandes catégories selon les modèles de mémoire {[}17{]}: (1)
907 les multiprocesseurs et (2) les multicomputers (Fig \dots ). La première
908 catégorie regroupe les machines à mémoire partagée (« shared memory
909 ») qui se subdivisent en trois classes selon le mode d'accès
910 des CPU aux mémoires : (1) UMA ou « Uniform Memory Access » où tous
911 les CPU accèdent une page mémoire physique de façon « uniforme »,
912 avec le même temps d'accès tolérant ainsi la mise à
913 l'échelle. Dans ce cas, les CPU sont tous connectés
914 aux mémoires via un bus ((Figure \figref{UMA}). Un système d'adressage
915 global est appliqué à l'ensemble des mémoires physiques.
916 (2) NUMA ou « Non Uniform Memory Access » où les groupes de CPU accèdent
917 à des mémoires locales à travers des buses et les groupes sont interconnectés
918 par un réseau de communication ((Figure \figref{NUMA}). Dans ce cas, le temps
919 d'accès des CPU aux pages mémoires varie selon que
920 ces dernières sont locales ou distantes. L'espace d'adressage
921 des mémoires se fait au niveau de chaque groupe de CPU. (3) L'architecture
922 COMA (« Cache Only Memory Access ») est un hybride avec un modèle
923 de programmation de mémoire partagée mais une implémentation physique
924 de mémoire distribué ((Figure \figref{COMA}). Dans ce cas, chaque noeud détient
925 une partie du système de l'espace d'adressage.
926 Le partitionnement des données étant dynamique, la structure COMA
927 n'associe pas la même adresse à une page physique de
928 la mémoire. Les mémoires locales dans ce cas de figure jouent finalement
929 un rôle de cache au processeur.
931 \mfigure[h]{width=8cm, height=8cm}{"UMA architecture"} {Mémoire MIMD: Architecture UMA} {UMA}
933 \mfigure[h]{width=8cm, height=8cm}{"NUMA architecture"} {Mémoire MIMD: Architecture NUMA} {NUMA}
935 \mfigure[h]{width=8cm, height=8cm}{"COMA architecture"} {Mémoire MIMD: Architecture COMA} {COMA}
937 Malgré que dans le cadre de nos travaux, nous n'avions
938 pas eu une contrainte particulière en termes de système de stockage,
939 une brève revue des problématiques liées à ce sous-système en environnement
940 de calcul parallèle est présentée parce qu'il peut
941 influencer à large echelle sur la prédiction de la performance de
942 l'application. Les systèmes traditionnels ont opté
943 pour des architectures NFS (Network File System) ou de type NAS (Network
944 Attached Storage) ou encore de type SAN (Storage Access Network).
945 Malgré que les systèmes de stockage NFS et NAS sont relativement faciles
946 à mettre en oeuvre, l'inconvénient majeur est qu'ils
947 présentent un point de défaillance unique (SPOF) et ont des difficultés
948 de monter en échelle. Pour le système SAN, les données sont stockées
949 dans des baies de stockage accessibles par les unités de calcul à
950 travers un réseau basé sur des canaux de fibres et des adapteurs de
951 haut débit (HBA) ; ce qui rend le coût de l'implémentation rapidement
952 excessif dès que le nombre de noeuds augmente. Dans un environnement
953 d'applications parallèles, le réseau de communication
954 doit avoir une très haute performance pour répondre aux besoins d'échange
955 mais aussi d'accès aux données. En plus, il doit
956 avoir la flexibilité et la capacité de monter en échelle suivant la
957 demande du système. Ces caractéristiques requis sont accentués par
958 la variabilité des besoins en entrées/sorties des applications HPC: dans le même lot d'applications exécutées, certaines
959 accèdent à des données de manière séquentielle tandis que d'autres
960 demandent des entrées/sorties aléatoires fortement sensibles. Les
961 solutions apportées dénommées « système de fichiers parallèle » reposent
962 sur la conception d'une architecture répondant à ces
963 prérequis. Dans ce type de système de fichiers, les blocs de données
964 sont répartis par morceaux dans différents serveurs et dans différentes
965 locations du système de stockage. On peut ainsi accroitre le débit
966 de stockage et d'extraction au fur et à mesure que
967 le nombre de serveurs ou de baies de stockage augmentent.L'architecture sera réalisée par:
970 \item [$\bullet$] l'introduction d'une couche de « noeuds
971 de services de fichiers » entre les noeuds de calcul et les baies de
972 stockage des données. Ces noeuds sont reliés en clusters via un réseau
973 rapide de type Infiniband.
975 \item [$\bullet$] L'ajout des «serveurs de metadata » (MDS : MetaData
976 Server) qui gèrent les métadonnées accessibles à partir des « baies
977 de stockage des métadonnées » (MDA) avant d'extraire
978 les données proprement dites sur les baies de stockage en arrière-plan.
981 Les métriques utilisées pour caractériser une telle architecture sont
982 le nombre nominal d'entrées/sorties par seconde (IOPS)
983 d'une part et le débit de la bande passante du réseau
984 reliant les différents composants (Gb/s) d'autre part.
985 Plusieurs solutions globalement efficaces ont été avancées respectant
986 cette architecture. On peut citer les « systèmes de fichiers ouverts
987 » tels que pNFS (Parallel NFS), GFS, XFS, PVFS (Clemson University),
988 MogileFS {[}\dots {]} mais Lustre {[}\dots {]} présenté dans la figure
989 \dots{} est largement utilisé en environnement de calcul parallèle
990 : au moins, la moitié des clusters « top 10 » utilise ce modèle et
991 plusieurs laboratoires l'ont aussi adopté (Pacific
992 Northwest National Lab (PNNL), Lawrence Livermore National Lab (LLNL)
993 mais aussi Los Alamos National Lab (LANL). Lustre utilise les OST
994 («Object Storage Targets ») dans les serveurs de fichiers (en opposition
995 au « Block Storage Device ») pour assurer la cohérence et la résilience
996 du système de fichiers. A titre indicatif, le cluster de PNNL {[}19{]}
997 avec 1800 processeurs Itanium délivrant jusqu'à 11
998 TFlops utilise Lustre avec une capacité de stockage de 53 Toctets
999 avec une bande passante de 3.2 Gbits/s. Chaque noeud du cluster peut
1000 accéder au serveur parallèle Lustre avec un débit de 650 Mb/s.
1002 La mise en oeuvre des systèmes de fichiers parallèles pour les calculs
1003 à haute performance s'approche des technologies utilisées
1004 en entreprise pour exploiter les applications à données intensives
1005 traitant de très grandes masses de données. En effet, les « sciences
1006 de données », « big data », « analytics » (business intelligence,
1007 Datamart, Data Mining) demandent des accès très rapides à des grands
1008 volumes de données variées, structurées ou non structurées, pour en
1009 extraire une information utile. Pour cela, le principe « d'apporter
1010 le calcul auprès des données » (« Bring the compute to the data »)
1011 est appliqué en lieu et place du traditionnel « extraire et charger
1012 en mémoire les données du système de stockage pour traitement par
1013 l'unité de calcul ». Hadoop {[}\dots {]}, une plateforme
1014 de traitement de « big data » la plus utilisée, combine dans la même
1015 machine physique les « noeuds de calcul » et les « noeuds de données
1016 ». Cet ensemble d'outils ayant une architecture fortement
1017 distribuée utilise le mécanisme de transfert des données du système
1018 de stockage « globalement partagé et persistent » ayant une large
1019 capacité vers le système de fichier local avant traitement.
1022 \subsubsection{Facteur : Réseaux de communication}
1024 Dans un contexte d'exécution parallèle et distribuée
1025 des applications, la communication entre les processus de calcul pour
1026 échange de données ou d'instructions est critique et
1027 peut constituer un goulot d'étranglement pour le temps
1028 d'exécution et la montée en charge de l'applicaiton.
1029 En effet, la performance globale quantifiée par le temps d'exécution
1030 de l'application dépend fortement de la nature et de
1031 la typologie des réseaux de communication. Il a été mis en exergue
1032 dans les paragraphes précédents l'importance du trafic
1033 de données entre chaque unité de calcul et les différentes couches
1034 de mémoire vive utilisées par le système. Dans un environnement de
1035 grilles de calcul, de clusters ou de P2P, d'autres
1036 types de réseaux de communication influencent cette performance.
1038 %Ethernet, Infiniband (56 à 100 Gb/s), Omni-path {[}15{]}
1040 %Facteurs influençant le temps de communication : Type de comm (point
1041 %to point, collective comme broadcast, scatter, gather, reduce)
1043 \subsection{Facteurs liés au code de l'application}
1045 Outre ces problématiques liées directement à l'environnement
1046 de lancement, plusieurs autres facteurs liés au code de l'application
1047 lors de son exécution peuvent influencer le comportement du système
1048 rendant aussi la prédiction de la performance complexe et difficile.
1049 Ces facteurs liés au comportement du code lors de son exécution en
1050 parallèle vont influencer la performance globale en impactant le temps
1051 de calcul et le temps de communication des données entre les unités
1054 \subsubsection{Facteur : Taille du problème}
1056 Parmi les facteurs impactant le temps de calcul, la taille du problème
1057 peut avoir une grande influence sur le temps de calcul surtout en
1058 strong scaling. En effet, dans ce mode de scalabilité, la
1059 taille du problème étant fixe alors qu'on augmente
1060 la puissance de calcul par l'ajout de processeurs et
1061 coeurs supplémentaires, le temps de calcul va varier en fonction de
1062 ces changements. En mode weak scaling où la taille du problème
1063 augmente dans la même proportion que l'accroissement
1064 du nombre de processeurs / coeurs, le temps de calcul global attendu
1065 reste théoriquement plus ou moins constant. La taille du problème
1066 qui ne cesse d'augmenter pour le besoin des applications
1067 parallèles constitue un élément impactant le temps total d'exécution
1070 \subsubsection{Performance de la parallélisation}
1072 Dans cette section, la notion de "performance de la parallélisation" est intrduite pour caractériser la performance d'un code une fois executé en mode parallèle. C. Rosas et Al. {[}\dots {]}
1073 définit cette mesure ($\eta$Parallel) comme étant le produit des trois facteurs fondamentaux "normalisés" suivants dont chaque facteur est quantifié par une valeur entre 0 et 1 :
1077 \eta Parallel =LB \times Ser \times Trf
1082 \item [$\bullet$] L'efficacité de la « répartition des charges » LB ("Load Balancing") est définie comme étant « la perte d'efficacité potentielle» sur le temps de calcul de chaque processus. Elle est mesurée comme
1083 étant le rapport entre le temps de calcul moyen par processeur et
1084 le temps de calcul maximum enregistré sur l'ensemble
1085 des processeurs participants:
1089 LB = {[} \sum \limits_{k=1}^p eff_k) / p {]} / max(eff_k)
1091 où : p est le nombre de processeurs et $eff_k$ ("Efficiency") le temps de calcul utilisé par le processeur k.
1093 \item [$\bullet$] L'efficacité de la « sérialisation » : Elle représente
1094 l'inefficacité causée par les « dépendances dans le
1095 code » qui se traduit par la nécessité d'échanger des
1096 données entre les processeurs. Ces dernières peuvent impacter de façon
1097 importante la performance du code parallèle. Ce facteur est mesuré comme étant
1098 le temps maximum enregistré pour tous les processeurs présents lors de l'exécution
1099 du code en faisant abstraction du temps des échanges: on considère comme si on est en présence d'une architecture à « communication instantanée » c'est-à-dire un réseau avec une bande
1100 passante infinie et une latence égale à 0. Dans ce cas, ideal ($eff_i$) est l'efficacité du processeurs i sans le temps de communication.
1104 Ser = max ( ideal( eff_i ) )
1107 \item [$\bullet$] L'efficacité du « transfert » de données : La montée
1108 en charge de la taille du problème impactera la taille des données
1109 à échanger entre les processus. Ce facteur est défini comme étant
1110 la perte de performance globale due aux transferts des données. En
1111 prenant en compte le temps de communication, il est mesuré comme le
1112 ratio entre le maximum entre les temps relatifs d'exécution
1113 des processus concurrents (rapport entre le temps d'exécution $T_i$
1114 d'un processus et le temps total réel d'exécution T
1115 du code) et l'efficacité de la sérialisation Ser :
1119 Trf = max( T_i/T ) / Ser
1124 Les auteurs ont montré que cette mesure de la performance de la parallélisation
1125 est indépendante du temps absolu total d'exécution.
1126 Pour les algorithmes itératifs, cette métrique ne dépend pas du nombre
1127 d'itérations avant l'arrêt de l'algorithme
1128 : le temps d'exécution d'une itération
1131 Cette quantification de la performance de la parallèlisation du code
1132 repose sur les trois paramètres suivants appelés aussi « inhibiteurs
1133 de la performance » qui décrivent selon {[}12{]} la "sensibilité"{}
1134 du code : (1) la sensibilité à la fréquence CPU, (2) la sensibilité
1135 à la bande passante mémoire et enfin (3) le temps consacré aux communications
1136 et les entrées / sorties. Selon l'algorithme considéré
1137 ou l'aspect scientifique du code, l'application
1138 peut être influencée par ces paramètres. L'analyse
1139 du code par le profiling et l'optimisation pourront
1140 aider à cette sensibilité du code et à améliorer la performance de
1143 Dans le cadre de ces travaux, à plus large échelle, c'est-à-dire
1144 en augmentant la taille du problème en entrée comme la capacité de
1145 calcul disponible, les facteurs suivants vont influencer de plus en
1146 plus le temps d'exécution de l'application
1147 impactant ainsi la performance de la parallélisation du code. Selon
1148 {[}18{]}, même si la surcharge engendrée par la parallélisation du
1149 code (« surcharge due à la parallélisation ») ainsi que celle naturellement
1150 subie par le système comme dans une exécution séquentielle (« surcharge
1151 système ») peuvent ne pas être négligeables, on constate
1152 comme précédemment que les facteurs liés à « l'oisivité
1153 » des processeurs ainsi que la communication entre les différentes
1154 couches mémoires (DRAM, cache, « mémoire d'attraction
1155 » (renvoi) ) peuvent peser lourdement à grande échelle sur la performance
1156 globale de l'application. La surcharge due à la parallélisation
1157 provient de l'initialisation par processeur pour une
1158 exécution parallèle (qui n'existe pas lors d'une
1159 exécution séquentielle). Le partitionnement des tâches mais aussi les tâches
1160 de vérrouillage et de déverrouillage lors d'une entrée
1161 et de sortie d'une section critique du code contribue
1162 à l'importance de ce facteur. La surcharge système
1163 comme les défauts de pages, l'interruption horloge,
1164 le mécanisme de fork/join, \dots{} peut être accentuée par rapport
1165 à une exécution séquentielle surtout pour les programmes à haut degré
1166 de parallélisme parce que ces actions sont inhérentes à un processeur
1167 et l'augmentation du nombre de processeurs lors d'une
1168 exécution parallèle peut engendrer une surcharge système non négligeable.
1169 Toutefois, comme avancé plus haut, ces surcharges peuvent ne pas être
1170 significatives comparées au temps perdu suite à l'oisivité
1171 (idle) des blocs de calcul. Cette dernière est surtout due à une parallélisation
1172 insuffisante ou encore par une répartition des charges non optimale.
1173 Enfin, le facteur communication nécessaire pour le thread courant
1174 de chercher des données qui ne sont pas localisées dans ses mémoires
1175 caches locales peut affecter dramatiquement la performance de la parallélisation
1176 du programme. En effet, pendant cette recherche, l'unité
1177 de calcul reste bloqué (stalled).
1180 %\section*{Solutions apportées}
1183 \section{Techniques de profiling et instrumentation des applications parallèles}
1186 \section{Méthodes de prédiction de la performance de l'application parallèle}
1189 \section{Conclusion partielle}
1191 \part{PARTIE II - Travaux de contributions, résultats et perspectives}
1193 \chapter{Comparaison par simulation à large échelle de la performance de deux algorithmes itératifs parallèles en mode asynchrone}
1195 \section{Protocoles et expérimentations}
1199 \section{Conclusion partielle}
1201 \chapter{Simulation avec SIMGRID de l\textquoteright exécution des solveurs linéaires en mode synchrone et asynchrone sur un environnement multi-coeurs simulés}
1203 \section{Protocoles et expérimentations}
1207 \section{Conclusion partielle}
1209 \chapter{Modèle de prédiction de la performance à large échelle d'un algorithme itératif parallèle}
1211 \section{Approche et méthodologie}
1213 \section{Expérimentations et résultats}
1215 \section{Conclusion partielle}
1217 \chapter{Conclusion générale et perspectives}
1219 \section{Conclusion générale}
1221 \section{Travaux futurs et perspectives}
1225 %%--------------------
1226 %% Start the end of the thesis
1229 %%--------------------
1232 %% PERSONAL BIBLIOGRAPHY (use 'multibib')
1234 %% Change the style of the PERSONAL bibliography
1235 %\bibliographystylePERSO{phdthesisapa}
1237 %% Add the chapter with the PERSONAL bibliogaphy.
1238 %% The name of the BibTeX file may be the same as
1239 %% the one for the general bibliography.
1240 %\bibliographyPERSO{biblio.bib}
1242 %% Below, include a chapter for the GENERAL bibliography.
1243 %% It is assumed that the standard BibTeX tool/approach
1246 %% GENERAL BIBLIOGRAPHY
1248 %% To cite one of your PERSONAL papers with the style
1249 %% of the PERSONAL bibliography: \cite{key}
1251 %% To force to show one of your PERSONAL papers into
1252 %% the PERSONAL bibliography, even if not cited in the
1253 %% text: \nocite{key}
1255 %% The following line set the style of
1256 %% the GENERAL bibliogaphy.
1257 %% The "phdthesisapa" is a "apalike" style with the following
1259 %% a) The titles are output with the color of the institution.
1260 %% b) The name of the PhD thesis' author is underlined.
1261 \bibliographystyle{phdthesisapa}
1262 %% The following line may be used in place of the previous
1263 %% line if you prefer "numeric" citations.
1264 %\bibliographystyle{phdthesisnum}
1266 %% Link the GENERAL bibliogaphy to a BibTeX file.
1267 \bibliography{biblio.bib}
1269 \part*{BIBLIOGRAPHIE ET REFERENCES}
1271 {[}6{]} J.M. Bahi, S. Contassot-Vivier, R. Couturier. Interest of the asynchronism in parallel iterative algorithms on meta-clusters. \textit{LIFC - Université de Belford-Montbéliard}.
1273 {[}7{]} T.P. Collignon and M.B. van Gijzen. Fast iterative solution of large sparse linear systems on geographically separated clusters. \textit{The International Journal of High Performance Computing Applications} 25(4) 440\textendash 450.
1275 {[}8{]} D. Bertsekas and J. Tsitsiklis. Parallel and Distributed Computation, Numerical
1276 Methods. \textit{Prentice Hall Englewood Cliffs N. J., 1989}.
1278 {[}9{]} C. E. Ramamonjisoa, L. Z. Khodjav, D. Laiymani, A. Giersch and R. Couturier. Simulation of Asynchronous Iterative Algorithms Using SimGrid. \textit{2014 Femto-ST Institute - DISC Department - Université de Franche-Comté, IUT de Belfort-Montbéliard}
1280 {[}10{]} M. J. Voss and R. Eigemann. Reducing Parallel Overheads Through Dynamic
1281 Serialization. \textit{Purdue University School of Electrical and Computer Engineering}.
1283 {[}11{]} K. J. Barker, K. Davis, A. Hoisie, D. J. Kerbyson, M. Lang, S. Pakin and J. C. Sancho. Using performance modeling to design large-scale systems. \textit{Los Alamos National Laboratory(LANL), New Mexico}.
1285 {[}12{]} M. Dubois and X. Vigouroux. Unleash your HPC performance with Bull.
1286 \textit{Maximizing computing performance while reducing power consumption}. http://www.hpctoday.fr/published/regional/operations/docs/W-HPCperformance-en1.pdf
1288 {[}14{]} Site du top500. http://www.top500.org
1290 {[}15{]} C. Harris et al. HPC Technology Update. \textit{Pawset Supercomputing Center - Sept 2015}. http://www.pawsey.org.au/wp-content/uploads/2015/09/Pawsey\_HPC\_Technology\_Update\_20150923.pdf
1292 {[}16{]} A. J. van der Steen, J. J. Dongarra. Overview of Recent Supercomputers.
1293 \textit{Academic Computing Centre Utrecht, the Netherlands, Department of Computer Science, University of Tennessee, Knoxville, Mathematical Sciences Section, Oak Ridge, National Laboratory, Oak Ridge}. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.49.3743\&rep=rep1\&type=pdf
1295 {[}17{]} V. Rajput , S. Kumar, V.K.Patle. Performance Analysis of UMA and NUMA Models".
1296 \textit{School of Studies in Computer Science Pt.Ravishankar Shukla University, Raipur,C.G.} http://www.ijcset.net/docs/Volumes/volume2issue10/ijcset2012021006.pdf
1298 {[}18{]} D. Nguyen, Raj Vaswani and J. Zahorian. Parallel Application Characterization for
1299 Multiprocessor Scheduling Policy Design. \textit{Department of Computer Science and Engineering - University of Washington, Seattle, USA}.
1301 {[}19{]} M. Ewan. Exploring Clustered Parallel File Systems and Object Storage.
1302 \textit{2012}. https://software.intel.com/en-us/articles/exploring-clustered-parallel-file-systems-and-object-storage
1304 {[}20{]} F. Silva, R. Rocha: Parallel and Distributed Programming - Performance Metrics. \textit{DCC-FCUP}.
1306 {[}21{]} G. Ballard et Al. Communication Optimal Parallel Multiplication
1307 of Sparse Random Matrices". \textit{UC Berkeley, INRIA Paris Rocquencourt, Tel-Aviv University}. http://www.eecs.berkeley.edu/\textasciitilde{}odedsc/papers/spaa13-sparse.pdf
1310 %%--------------------
1311 %% List of figures and tables
1313 %% Include a chapter with a list of all the figures.
1314 %% In French typograhic standard, this list must be at
1315 %% the end of the document.
1318 %% Include a chapter with a list of all the tables.
1319 %% In French typograhic standard, this list must be at
1320 %% the end of the document.
1323 %%--------------------
1324 %% Include a list of definitions
1327 %%--------------------
1332 \chapter{Premier chapitre des annexes}
1334 \chapter{Second chapitre des annexes}