SlideShare une entreprise Scribd logo
Parall´lisation & mod`les
                                   e              e
                                de programmation
                                               Caner Candan
                                                M2 MIHP
                                                   6 mars 2011


Table des mati`res
              e
1 Produit matriciel                                                                                                                                                2
      ´
  1.1 Enonc´ . . . . . . . . . .
            e                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
  1.2 Solution . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
      1.2.1 La diffusion . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
      1.2.2 Le produit . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
      1.2.3 L’impl´mentation
                    e              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3

2 D´coupage d’un tableau binaire
    e                                                                                                                                                               3
      ´
  2.1 Enonc´ . . . . . . . . . . . . . .
            e                                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    3
  2.2 Solution . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
      2.2.1 D´terminer l’index . . .
               e                                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
      2.2.2 Cr´er le tableau binaire
                e                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
      2.2.3 Impl´mentation . . . . .
                  e                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4

3 Design                                                                                                                                                            5
  3.1 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                        5
  3.2 Surcharge d’op´rateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                    e                                                                                                                                               5

4 Mesure de performance                                                                                                                                             6
  4.1 Pr´ambule . . . . . . . . . . . . . . . . .
         e                                                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  4.2 Identifier les ressources les plus utilis´es
                                              e                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  4.3 Pseudo-code de la fonction apply . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  4.4 La fonction en parall`le . . . . . . . . .
                            e                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  4.5 Speed-up . . . . . . . . . . . . . . . . .                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
  4.6 Mesures . . . . . . . . . . . . . . . . . .                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
      4.6.1 Fonctions objectifs . . . . . . . .                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
      4.6.2 Benchmark . . . . . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
      4.6.3 Dynamicit´ . . . . . . . . . . . .
                         e                                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      4.6.4 R´sultats en O(1) . . . . . . . .
               e                                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      4.6.5 R´sultats en O(n) . . . . . . . .
               e                                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10

5 Conclusion                                                                                                                                                       10




                                                               1
1 PRODUIT MATRICIEL                                                                            2


1         Produit matriciel
1.1       ´
          Enonc´
               e
   Matrice : D´crire un algorithme PRAM pour le mod`le EREW qui utilise O(n3 ) processeurs
               e                                   e
pour multiplier deux matrices de taille n ∗ n. 1

1.2       Solution
   Une solution consisterait ` diffuser dans un premier temps toutes les donn´es des matrices `
                              a                                                e                a
multiplier ` chaque processus puis de faire le produit des matrices en prenant le soin que chaque
           a
processus utilise les donn´es qui leur est propre.
                          e

1.2.1       La diffusion
   En respectant le mod`le EREW, les matrices A et B ∈ Kn∗n sont copi´es, dans un premier
                          e                                              e
temps, n fois dans les cubes A et B ∈ Kn∗n∗n . Ceci permet de r´server une dimension du cube
                                                               e
a
` un processus et ´viter toute lecture concurrente.
                  e

    L’algorithme 1 pr´sente le pseudo-code de la fonction de diffusion qui prend comme donn´e
                     e                                                                      e
en entr´e une matrice M ∈ Kn∗n et retourne un cube M ∈ Kn∗n∗n . Elle est exprim´e en
        e                                                                                e
2 ´tapes. La premi`re consiste ` affecter, en utilisant O(n2 ) processeurs, chaque point de la
  e                e             a
matrice dans la premi`re dimension du cube. La deuxi`me ´tape effectue la copie en diffusion 2
                      e                                e   e
de chaque point de la matrice situ´ ` la premi`re dimension du cube vers les autres dimensions
                                   ea         e
du cube en utilisant O(log n) processeurs et pour une matrice enti`re en O(n2 ∗ log n).
                                                                   e

          Donn´es : M ∈ Kn∗n , n ∈ N
                e
          R´sultat : M ∈ Kn∗n∗n
           e
      1   d´but
           e
      2      parall`le
                   e
      3      pour i ← 0 ` n faire
                           a
      4          parall`le
                       e
      5          pour j ← 0 ` n faire
                                a
      6              m (0, i, j) ← m(i, j)

      7        parall`le
                     e
      8        pour s ← 0 ` log2 n faire
                             a
      9           parall`le
                         e
    10            pour h ← 0 ` s2 faire
                                 a
    11                 parall`le
                             e
    12                 pour i ← 0 ` n faire
                                     a
    13                     parall`le
                                 e
    14                     pour j ← 0 ` n faire
                                        a
    15                         m (2s + h, i, j) ← m (h, i, j)

    16    fin
                          Algorithme 1 : Copie de matrice en diffusion

                 n
    1. cij = k=0 aik bkj : http://fr.wikipedia.org/wiki/Produit_matriciel
    2. Hot potato routing : http://en.wikipedia.org/wiki/Hot_potato_routing
´
2 DECOUPAGE D’UN TABLEAU BINAIRE                                                             3


1.2.2       Le produit
   En appliquant le mod`le EREW, le produit matriciel prend en param`tre les cubes A et
                        e                                            e
B ∈ Kn∗n∗n tel que chaque processus utilise sa dimension de cube respective pour lire les
donn´es de aij et bij .
    e

   L’algorithme 2 pr´sente le pseudo-code de la fonction de produit matriciel qui prend comme
                     e
donn´e en entr´e les cubes A et B ∈ Kn∗n∗n et retourne une matrice C ∈ Kn∗n . L’affectation
     e         e
des valeurs dans la matrice C se fait en O(n2 ) et le produit de cij se fait en O(n).

          Donn´es : A, B ∈ Kn∗n∗n , n ∈ N
                e
          R´sultat : C ∈ Kn∗n
           e
      1   d´but
           e
      2      parall`le
                   e
      3      pour i ← 0 ` n faire
                            a
      4          parall`le
                       e
      5          pour j ← 0 ` n faire
                              a
      6              c(i, j) ← n a(p, i, k) ∗ b(p, k, j)
                                k=0

      7   fin
                              Algorithme 2 : Produit matriciel


1.2.3       L’impl´mentation
                  e
   Apr`s avoir d´crit la fonction de diffusion et le produit matriciel respectant tous deux le
       e         e
mod`le EREW, nous allons voir l’implementation d’un produit de deux matrices A et B ∈ Kn∗n
    e
produisant une troisi`me matrice C ∈ Kn∗n .
                     e

    L’algorithme 3 d´crit l’impl´mentation.
                    e           e

          Donn´es : A, B ∈ Kn∗n , n ∈ N
               e
          R´sultat : C ∈ Kn∗n
           e
      1   d´but
           e
      2      A ← dif f usion(A, n)
      3      B ← dif f usion(B, n)
      4      C ← produit(A , B )
      5   fin
                  Algorithme 3 : Impl´mentation du produit matriciel
                                        e



2         D´coupage d’un tableau binaire
           e
2.1       ´
          Enonc´
               e
    D´coupage d’un tableau : Soit A un tableau de longueur n dont les ´l´ments sont soit des
      e                                                                  ee
0 soit des 1. Concevez un algorithme EREW de complexit´ O(log n) utilisant O(n) processeurs
                                                         e
pour ranger tous les ´l´ments 1 ` la droite du tableau tout en maintenant leur ordre relatif
                        ee         a
(propri´t´ de stabilit´ des ´l´ments).
        ee            e     ee
    Hint : effectuer un calcul de pr´fixe pour d´terminer quel devrait ˆtre la position de chaque
                                    e         e                      e
´l´ment.
ee
´
2 DECOUPAGE D’UN TABLEAU BINAIRE                                                                4


2.2       Solution
    Notre tableau ´tant binaire, contenant que des 0 et 1, il devient facile de compter le nombre
                    e
de 1 en sommant toutes les valeurs du tableau pour ensuite d´terminer ` quel index placer les
                                                                e           a
0 et 1.
    Toute fois pour respecter l’´nonc´ et avoir une complexit´ en O(log n), nous allons devoir
                                  e   e                         e
utiliser la fonction calculant la somme des pr´fixes.
                                              e

2.2.1       D´terminer l’index
             e
    L’algorithme 4 permet de d´terminer l’index qui constituera la fronti`re entre les 0 et 1 dans
                               e                                         e
le tableau. Pour cela il prend en param`tre le tableau binaire B ∈ Kn ainsi que la taille du
                                        e
tableau n ∈ N .

          Donn´es : B ∈ Kn , n ∈ N
                e
          R´sultat : i ∈ N
           e
      1   d´but
           e
      2      i ← n − calcul somme pref ixe(B)
      3   fin
                              Algorithme 4 : Trouver l’index


2.2.2       Cr´er le tableau binaire
              e
   L’algorithme 5 prend en param`tre l’index et la taille et cr´e un tableau binaire tri´ en
                                     e                         e                        e
fonction de l’index, 0 ` gauche et 1 ` droite.
                       a             a

          Donn´es : i, n ∈ N
                e
          R´sultat : B ∈ Kn
           e
      1   d´but
           e
      2      parall`le
                   e
      3      pour j ← 0 ` i faire
                          a
      4          B (i) ← 0
      5        parall`le
                     e
      6        pour j ← i ` n faire
                          a
      7           B (i) ← 1
      8   fin
                       Algorithme 5 : Cr´ation du tableau binaire tri´
                                        e                            e


2.2.3       Impl´mentation
                e
   L’algorithme 6 illustre la solution.

          Donn´es : B ∈ Kn
                e
          R´sultat : B ∈ Kn
           e
      1   d´but
           e
      2      i ← trouver index(B)
      3      B ← creer tableau binaire(i)
      4   fin
                     Algorithme 6 : D´coupage d’un tableau binaire
                                       e
3 DESIGN                                                                                                    5


3     Design
    Tous les exercices ont ´t´ d´velopp´s en C++ en utilisant le paradigme de programmation
                            ee e          e
objet et le design qui suit a ´t´ ´labor´ pour regrouper les diff´rents composants de calculs.
                                ee e        e                     e
N´anmoins une recherche a ´t´ effectu´ pour d´terminer les limites de OpenMP et C++. Il
  e                            ee          e        e
semblerait que les conteneurs fournit par la STL 3 ne soient pas threadsafe 4 . Une ´tude 5 donne
                                                                                    e
une liste non-exhaustive des pr´cautions ` prendre lors de l’utilisation de OpenMP en C++.
                                  e           a
Cependant la version OpenMP 3.0 apporte des concepts nouveaux permettant l’utilisation no-
tamment des iterateurs. On peut ainsi, par exemple, s’affranchir de simple indexeur de tableau
et ´tendre la parall´lisation sur des listes chaˆ ees.
   e                e                           ın´

3.1    Diagramme de classes




                                   Figure 1 – Diagramme de classes

    Deux grandes familles d’op´ration coexistent. Elles sont pr´sent´es en figure 1. Les op´rations
                               e                               e     e                    e
de calcul ` param`tre unique “OMPComputeUnary” et celles ` deux param`tres “OMPCompu-
          a       e                                             a            e
teBinary”. Tous deux renvoient un r´sultat. Elles sont pr´fix´es de “OMP” pour OpenMP 6 . Le
                                     e                     e e
calcul de somme des pr´fixes prenant un seul param`tre en entr´e “OMPVector” et renvoyant
                        e                             e            e
un “Atom”, cette classe se situe dans la famille “OMPComputeUnary”. Le produit matriciel se
situe, quant ` lui, dans la famille “OMPComputeBinary”, cette classe prend deux param`tres
             a                                                                               e
“OMPMatrix” et retourne le mˆme type. On peut imaginer d’autres op´rations comme, par
                                  e                                         e
exemple, un produit vectoriel.

3.2    Surcharge d’op´rateur
                     e
    Compte tenu des possibilit´s offertes par le langage C++, comme la surcharge des op´rateurs,
                               e                                                      e
l’op´rateur ∗ se voit ainsi surcharg´ dans la classe “OMPMatrix” afin d’appeler implicitement
    e                               e
la classe “OMPMatrixProduct” pour le calcul du produit matriciel. Ainsi en ´crivant le code
                                                                              e
C = A ∗ B ceci revient ` ´crire C = OM P M atrixP roduct()(A, B).
                         ae
   3. Standard Template Library : http://www.sgi.com/tech/stl/
   4. On dit qu’un programme ou qu’une portion de code est thread-safe s’il fonctionne correctement durant une
ex´cution simultan´e par plusieurs threads (processus l´gers). http://fr.wikipedia.org/wiki/Threadsafe
  e               e                                    e
   5. C++ and OpenMP : http://www.compunity.org/events/pastevents/parco07/parco_cpp_openmp.pdf
   6. Open Multi-Processing : http ://openmp.org/
4 MESURE DE PERFORMANCE                                                                           6


4         Mesure de performance
    Je profite de ce rapport pour parler d’un travail qui m’a ´t´ demand´ en entreprise. Nous uti-
                                                             ee         e
lisons le framework EO  7 pour d´velopper nos algorithmes ´volutionnaires 8 . Le sujet consistait
                                 e                           e
a
` impl´menter, au framework EO, un parall´lisme ` m´moire partag´e en utilisant OpenMP.
       e                                     e       a e              e

4.1        Pr´ambule
             e
    Avant de commencer il est important de pr´ciser que les EA 9 travaillent sur une population
                                                e
d’individu aussi appel´ ´chantillon. Un individu ´tant repr´sent´ par un point dans l’´chantillon,
                      ee                          e        e    e                     e
la complexit´ d’un probl`me est d´finit par le nombre de dimensions pour chaque individu.
            e            e         e

    Le probl`me est repr´sent´ par la fonction objectif qui prend en param`tre un individu (un
              e          e     e                                             e
point dans l’´chantillon) et ´value toutes ses dimensions pour en d´duire la qualit´ 10 . La qualit´
              e              e                                     e               e               e
est le crit`re de comparaison d’un point dans son ´chantillon.
           e                                        e

4.2        Identifier les ressources les plus utilis´es
                                                   e
    Un test de profiling a ´t´ ex´cut´ afin d’identifier les ressources les plus utilis´es dans le
                            ee e e                                                  e
framework EO. Le test nous a permit d’identifier une fonction qui est utilis´e par une grande
                                                                             e
majorit´ des op´rateurs 11 EO. Il s’agit de la fonction “apply”. Elle prend en param`tres une
        e       e                                                                     e
population d’individu et un op´rateur. Cette fonction va it´rer sur tous les individus de la
                                e                              e
population et appliquer l’op´rateur. Il peut ˆtre int´ressant d’optimiser cette fonction. Nous
                              e               e       e
allons nous limiter ` transformer le code s´quentiel en parall`le.
                    a                      e                  e

4.3        Pseudo-code de la fonction apply
   L’algorithme 7 prend en param`tre une population ainsi qu’un op´rateur ` appliquer `
                                e                                 e       a           a
chaque individu.

          Donn´es : P ∈ Kn , F ∈ Operateur
               e
          R´sultat : B ∈ Kn
           e
      1   d´but
           e
      2      pour i ← 0 ` n faire
                          a
      3         F (P (i))
      4   fin
                               Algorithme 7 : La fonction apply



4.4        La fonction en parall`le
                                e
  L’algorithme 8 transforme la fonction “apply” en parall`le en utilisant le mod`le PRAM
                                                           e                    e
CREW 12 et O(n) processeurs pour parcourir tous les individus de la population.
  7.      Evolving Object, http://eodev.sf.net
  8.      Algorithme ´volutionnaire : http://fr.wikipedia.org/wiki/Algorithme_evolutionnaire
                      e
  9.      Algorithmes ´volutionnaires
                       e
 10.      Fitness en anglais
 11.      Op´rateurs de s´lection et variation
             e            e
 12.      Concurantial Read Exclusive Write
4 MESURE DE PERFORMANCE                                                                           7


          Donn´es : P ∈ Kn , F ∈ Operateur
                e
          R´sultat : B ∈ Kn
           e
      1   d´but
           e
      2      parall`le
                   e
      3      pour i ← 0 ` n faire
                           a
      4          F (P (i))
      5   fin
                         Algorithme 8 : La fonction omp apply


4.5       Speed-up
   Apr`s avoir cr´e la fonction alternative employant le parall´lisme ` m´moire partag´e, appel´
      e          e                                             e      a e             e        e
“omp apply”, nous allons ´tudier une solution de mesure du speed-up 13 .
                           e

   L’´quation, en figure 2, pr´sente une m´thode de mesure du speed-up et est impl´ment´e
     e                       e           e                                       e    e
dans l’algorithme 9.

                                                                P,D
                                 M esure du Speedup = r                 Spkl
                                                              k=0,l=0



                                   Figure 2 – Mesure du Speedup

   Une description des param`tres est disponible dans la figure 3.
                            e

                     Param`tres
                            e         Description
                     p                la taille minimum de la population
                     popStep          le pas d’iteration de la population
                     P                la taille maximum de la population
                     d                la taille minimum de la dimension
                     dimStep          le pas d’iteration de la dimension
                     D                la taille maximum de la dimension
                     r                le nombre d’ex´cution pour chaque com-
                                                       e
                                      binaison de p et d

                          Figure 3 – Description des param`tres utilis´s
                                                          e           e


4.6       Mesures
   En prenant en compte les param`tres d´crits pr´c´demment, nous allons lancer les tests sur
                                    e      e       e e
deux architectures mat´rielles diff´rentes pr´sent´ en figure 4.
                      e           e         e    e

   Pour visualiser l’´volution du speed-up, nous utilisons un outil de g´n´ration de graphiques 15 ,
                     e                                                  e e
avec les donn´es produits par les tests.
             e
               T∗
 13. Sp = T1 : http://en.wikipedia.org/wiki/Speedup
             p
 15. Utilisation de matplotlib en python pour g´n´rer des boites a moustache
                                               e e               `
4 MESURE DE PERFORMANCE                                                                         8


        Donn´es : p, P, popStep, d, D, dimStep, r ∈ N
             e
   1    d´but
         e
   2       pour k ← p ` P faire
                         a
   3          pour l ← d ` D faire
                             a
   4             pour m ← 0 ` r faire
                                 a
   5                 Ts ← 0
   6                 Tp ← 0
   7                 d´but
                       e
   8                      t1 ← omp get wtime()
   9                      ... code sequentiel avec k et l ex´cut´ m fois ...
                                                            e e
  10                      apply( ... )
  11                      t2 ← omp get wtime()
  12                      Ts ← t2 − t1
  13                 fin
  14                 d´but
                       e
  15                      t1 ← omp get wtime()
  16                      ... code parall`le avec k et l ex´cut´ m fois ...
                                         e                 e e
  17                      omp apply( ... )
  18                      t2 ← omp get wtime()
  19                      Tp ← t2 − t1
  20                 fin
                                                    Ts
  21                 ... on conserve le speed-up Tp pour k et l ...

  22    fin
                   Algorithme 9 : La fonction de mesure du speedup

              Processeur              Nombre de coeurs         Fr´quence
                                                                  e            Cache L1
              Intel Centrino vPro     2                        2.40GHz         3072KB
              Intel Core i7           8 (hyperthreading 14 )   2.67GHz         8192KB

                                Figure 4 – Architectures mat´rielles
                                                            e


4.6.1     Fonctions objectifs
    Il est important de simuler toutes les compl´xit´s de probl`mes que l’on peut ˆtre amen´
                                                 e e           e                    e        e
a e
` r´soudre. Pour nos tests, le choix a ´t´ orient´ vers deux fonctions objectifs de complexit´
                                       ee        e                                           e
diff´rente pr´sent´ en figure 5.
   e         e    e

 Fonction objectifs                           Complexit´ en temps
                                                       e                   Algorithme
 La fonction Sphere                                  O(1)                  Sphere = n individuk
                                                                                         k=0
 Probl`me ` temps variable quelconque
      e    a                                         O(n)                  usleep(U (0, 1) ∗ 10)

                                    Figure 5 – Fonctions objectifs


4.6.2     Benchmark
   Pour faciliter et automatiser les tests, une liste de mesures a ´t´ ´labor´ avec les param`tres
                                                                   e ee      e               e
d´crits pr´c´demment et un script contenant l’ensemble des tests ` ex´cuter a ´t´ cr´e. La liste
 e        e e                                                        a e          ee e
des mesures est pr´sent´e en figure 6.
                   e    e
4 MESURE DE PERFORMANCE                                                                                                                                                                               9


            Mesure                         Description
              1                            mesure pour toutes les combinaisons de P et D
              2                            mesure pour P ∈ [1, 101[ avec D = 1000
              3                            mesure pour P ∈ [1, 1001[ avec popStep = 10 et D = 1000
              4                            mesure pour D ∈ [1, 101[ avec P = 1000
              5                            mesure pour D ∈ [1, 1001[ avec dimStep = 10 et P = 1000

                                                                   Figure 6 – Liste des mesures


4.6.3   Dynamicit´
                 e
    Parmi les optimisations possibles en OpenMP, il existe deux types de planification, la pla-
nification statique, utilis´ par d´faut, divise le nombre de tˆches ` traiter ` tous les processus
                          e      e                           a     a          a
disponibles et la planification dynamique maintient une file de tˆches trait´e au fur et ` mesure
                                                                a           e           a
par les processus disponibles. Nous ´valuons la dynamicit´ par le rapport entre une mesure de
                                     e                     e
speedup en mode statique et une mesure de speedup en mode dynamique 16 .

4.6.4   R´sultats en O(1)
         e
   Le benchmark a ´t´ ex´cut´ dans un premier temps pour la fonction Sphere qui se r´soud en
                   ee e e                                                           e
temps constant. Les r´sultats de chaque mesure sont num´rot´s d’apr`s le tableau des mesures
                     e                                 e e         e
d´crit pr´c´demment.
 e       e e

    Les mesures sont pr´sent´es en fonction des processeurs utilis´s et disponibles en figure 7,
                       e    e                                     e
8, 9, 10 et 11.


                                 2.0                                                                                      2.0



                                 1.5                                                                                      1.5
                                                                                                         dynamicity - 1
                   speedup - 1




                                 1.0                                                                                      1.0



                                 0.5                                                                                      0.5



                                 0.0 13 6791115192327313539434751555963677175798387919599104110116
                                     245 8112162024283236404448525660646872768084889296101107113119
                                           014182226303438424650545862667074788286909498102108114120
                                            13172125293337414549535761656973778185899397 103109115121
                                                                                            105111117
                                                                                          100106112118                    0.0 13 6791115192327313539434751555963677175798387919599104110116
                                                                                                                              245 8112162024283236404448525660646872768084889296101107113119
                                                                                                                                    014182226303438424650545862667074788286909498102108114120
                                                                                                                                     13172125293337414549535761656973778185899397 103109115121
                                                                                                                                                                                     105111117
                                                                                                                                                                                   100106112118
                                                       100 iterations from 1,1 to 101,101                                                       100 iterations from 1,1 to 101,101


                                       (a) speedup sur 2 coeurs                                                                 (b) dynamicit´ sur 2 coeurs
                                                                                                                                             e

                                 2.5                                                                                            7

                                                                                                                                6
                                 2.0
                                                                                                                                5

                                 1.5
                                                                                                               dynamicity - 1




                                                                                                                                4
                   speedup - 1




                                                                                                                                3
                                 1.0

                                                                                                                                2
                                 0.5
                                                                                                                                1

                                 0.0 13 6791115192327313539434751555963677175798387919599104110116
                                     245 8112162024283236404448525660646872768084889296101107113119
                                           014182226303438424650545862667074788286909498102108114120
                                            13172125293337414549535761656973778185899397 103109115121
                                                                                            105111117
                                                                                          100106112118                          0 13 6791115192327313539434751555963677175798387919599104110116
                                                                                                                                  245 8112162024283236404448525660646872768084889296101107113119
                                                                                                                                        014182226303438424650545862667074788286909498102108114120
                                                                                                                                         13172125293337414549535761656973778185899397 103109115121
                                                                                                                                                                                         105111117
                                                                                                                                                                                       100106112118
                                                       100 iterations from 1,1 to 101,101                                                           100 iterations from 1,1 to 101,101


                                       (c) speedup sur 8 coeurs                                                                 (d) dynamicit´ sur 8 coeurs
                                                                                                                                             e

                                           Figure 7 – Mesure 1 en O(1) sur 2 et 8 coeurs




                                       Sp
 16. Dynamicit´ : Dp =
              e                         d
                                       Sp
5 CONCLUSION                                                                                                                                                                                                         10



                                 2.0                                                                                               2.0



                                 1.5                                                                                               1.5




                                                                                                                  dynamicity - 2
                   speedup - 2
                                 1.0                                                                                               1.0



                                 0.5                                                                                               0.5



                                 0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                             101316192225283134374043464952555861646770737679828588919497101
                                               121518212427303336394245485154576063666972757881848790939699
                                                                                                         100                       0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                               101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                 121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                           100
                                                        100 iterations from 1,1000 to 101,1000                                                            100 iterations from 1,1000 to 101,1000


                                          (a) speedup sur 2 coeurs                                                                       (b) dynamicit´ sur 2 coeurs
                                                                                                                                                      e

                                      6                                                                                                  8

                                                                                                                                         7
                                      5
                                                                                                                                         6
                                      4
                                                                                                                                         5




                                                                                                                        dynamicity - 2
                        speedup - 2




                                      3                                                                                                  4

                                                                                                                                         3
                                      2
                                                                                                                                         2
                                      1
                                                                                                                                         1

                                      0 123456789111417202326293235384144475053565962656871747780838689929598
                                                101316192225283134374043464952555861646770737679828588919497101
                                                  121518212427303336394245485154576063666972757881848790939699
                                                                                                            100                          0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                                   101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                     121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                               100
                                                           100 iterations from 1,1000 to 101,1000                                                             100 iterations from 1,1000 to 101,1000


                                          (c) speedup sur 8 coeurs                                                                       (d) dynamicit´ sur 8 coeurs
                                                                                                                                                      e

                                               Figure 8 – Mesure 2 en O(1) sur 2 et 8 coeurs


4.6.5   R´sultats en O(n)
         e
    Dans un second temps, le benchmark est ex´cut´ pour le probl`me qui se r´soud en temps
                                               e e                e           e
variable. Les r´sultats de chaque mesure sont num´rot´s d’apr`s le tableau des mesures d´crit
               e                                 e e         e                          e
pr´c´demment en figure 6.
  e e

   Il est important d’ajouter que compte tenu de la r´solution du probl`me en O(n) et non
                                                         e                  e
plus en fonction de la dimension, celle ci perd de son importance. Ainsi les mesures 1, 4 et 5 ne
sont plus nessaire ` mesurer. Seules les mesures 2 et 3 seront pr´sent´es ci-dessous.
                   a                                             e    e

    Un algorithme s´quentiel ex´cut´ sur un processeur ` 8 coeurs en comparaison avec un pro-
                    e           e e                     a
cesseur ` 2 coeurs est plus performant sur des petits ´chantillons. Nous avons donc choisit de
        a                                             e
d´finir les bornes des param`tres, d´crits en figure 6, comme multiple du nombre de coeurs
 e                           e      e
disponible.

    Les mesures sont pr´sent´es en fonction des processeurs utilis´s et disponibles en figure 12
                       e    e                                     e
et 13.


5    Conclusion
   Pour un processeur ` 2 coeurs, selon la complexit´ du probl`me utilis´e, nous pouvons
                          a                                  e          e         e
observer par la mesure du speedup que les ressources sont utilis´es au maximum 17 pour de
                                                                       e
grandes tailles d’´chantillon. Les petites tailles d’´chantillon restant domin´es par une ex´cution
                  e                                  e                        e             e
s´quentielle.
 e

  Pour un processeur ` 8 coeurs, en hyperthreading, notre premi`re observation consiste `
                         a                                          e                       a
montrer les limites de l’hyperthreading, en effet nous utilisons pas plus de 4 coeurs. Et pour
 17. cpu-bound
5 CONCLUSION                                                                                                                                                                                                         11



                                 2.0                                                                                               2.0



                                 1.5                                                                                               1.5




                                                                                                                  dynamicity - 3
                   speedup - 3
                                 1.0                                                                                               1.0



                                 0.5                                                                                               0.5



                                 0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                             101316192225283134374043464952555861646770737679828588919497101
                                               121518212427303336394245485154576063666972757881848790939699
                                                                                                         100                       0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                               101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                 121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                           100
                                                       100 iterations from 1,1000 to 1001,1000                                                           100 iterations from 1,1000 to 1001,1000


                                          (a) speedup sur 2 coeurs                                                                       (b) dynamicit´ sur 2 coeurs
                                                                                                                                                      e

                                      7                                                                                                  8

                                      6                                                                                                  7

                                                                                                                                         6
                                      5
                                                                                                                                         5




                                                                                                                        dynamicity - 3
                                      4
                        speedup - 3




                                                                                                                                         4
                                      3
                                                                                                                                         3
                                      2
                                                                                                                                         2
                                      1                                                                                                  1

                                      0 123456789111417202326293235384144475053565962656871747780838689929598
                                                101316192225283134374043464952555861646770737679828588919497101
                                                  121518212427303336394245485154576063666972757881848790939699
                                                                                                            100                          0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                                   101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                     121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                               100
                                                          100 iterations from 1,1000 to 1001,1000                                                            100 iterations from 1,1000 to 1001,1000


                                          (c) speedup sur 8 coeurs                                                                       (d) dynamicit´ sur 8 coeurs
                                                                                                                                                      e

                                               Figure 9 – Mesure 3 en O(1) sur 2 et 8 coeurs


rejoindre ce qui a ´t´ dit sur 2 coeurs, un plus grand nombre de petites tailles d’´chantillon
                   ee                                                              e
reste domin´e par une ex´cution s´quentielle.
            e            e        e

   La diff´rence entre les deux complexit´s de probl`me s’observe dans la mesure de la dyna-
          e                                e          e
micit´. En effet pour un probl`me en O(1), la planification statique en OpenMP permet d’avoir
     e                        e
une meilleur efficacit´ de travail tandis que en O(n), la planification dynamique apporte quelque
                    e
am´lioration.
   e

    Pour r´sumer nous avons compar´ par nos mesures les 2 types de planification de tˆches en
          e                        e                                                a
OpenMP, les 2 complexit´s de probl`mes que nous serons amen´ ` parall´liser et finalement sur
                         e        e                         ea        e
2 types de processeurs diff´rents.
                           e

    Un point que je n’ai pas eu le temps d’´claircir que j’invite ` regarder est l’utilisation de
                                            e                       a
l’auto parall´lisation int´gr´ au compilateur GCC
             e            e e                      18 . Il s’agit d’un niveau d’optimisation qui

consiste ` v´rifier la non d´pendance des donn´es dans les boucles et les parall´liser.
         a e                e                 e                                 e




 18. Automatic Parallelization : http://gcc.gnu.org/wiki/openmp
5 CONCLUSION                                                                                                                                                                                                 12




                         2.0                                                                                               2.0



                         1.5                                                                                               1.5




                                                                                                          dynamicity - 4
           speedup - 4   1.0                                                                                               1.0



                         0.5                                                                                               0.5



                         0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                     101316192225283134374043464952555861646770737679828588919497101
                                       121518212427303336394245485154576063666972757881848790939699
                                                                                                 100                       0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                       101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                         121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                   100
                                                100 iterations from 1000,1 to 1000,101                                                            100 iterations from 1000,1 to 1000,101


                                  (a) speedup sur 2 coeurs                                                                       (b) dynamicit´ sur 2 coeurs
                                                                                                                                              e

                              6                                                                                                  7

                              5                                                                                                  6

                                                                                                                                 5
                              4




                                                                                                                dynamicity - 4
                                                                                                                                 4
                speedup - 4




                              3
                                                                                                                                 3
                              2
                                                                                                                                 2

                              1                                                                                                  1

                              0 123456789111417202326293235384144475053565962656871747780838689929598
                                        101316192225283134374043464952555861646770737679828588919497101
                                          121518212427303336394245485154576063666972757881848790939699
                                                                                                    100                          0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                           101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                             121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                       100
                                                   100 iterations from 1000,1 to 1000,101                                                             100 iterations from 1000,1 to 1000,101


                                  (c) speedup sur 8 coeurs                                                                       (d) dynamicit´ sur 8 coeurs
                                                                                                                                              e

                                     Figure 10 – Mesure 4 en O(1) sur 2 et 8 coeurs




                         2.0                                                                                               2.0



                         1.5                                                                                               1.5
                                                                                                          dynamicity - 5
           speedup - 5




                         1.0                                                                                               1.0



                         0.5                                                                                               0.5



                         0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                     101316192225283134374043464952555861646770737679828588919497101
                                       121518212427303336394245485154576063666972757881848790939699
                                                                                                 100                       0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                       101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                         121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                   100
                                                100 iterations from 1000,1 to 1000,1001                                                           100 iterations from 1000,1 to 1000,1001


                                  (a) speedup sur 2 coeurs                                                                       (b) dynamicit´ sur 2 coeurs
                                                                                                                                              e

                              6                                                                                                  8

                                                                                                                                 7
                              5
                                                                                                                                 6
                              4
                                                                                                                                 5
                                                                                                                dynamicity - 5
                speedup - 5




                              3                                                                                                  4

                                                                                                                                 3
                              2
                                                                                                                                 2
                              1
                                                                                                                                 1

                              0 123456789111417202326293235384144475053565962656871747780838689929598
                                        101316192225283134374043464952555861646770737679828588919497101
                                          121518212427303336394245485154576063666972757881848790939699
                                                                                                    100                          0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                           101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                             121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                       100
                                                   100 iterations from 1000,1 to 1000,1001                                                            100 iterations from 1000,1 to 1000,1001


                                  (c) speedup sur 8 coeurs                                                                       (d) dynamicit´ sur 8 coeurs
                                                                                                                                              e

                                     Figure 11 – Mesure 5 en O(1) sur 2 et 8 coeurs
5 CONCLUSION                                                                                                                                                                                                                   13




                                  2.0                                                                                                            2.0



                                  1.5                                                                                                            1.5




                                                                                                                       variable_dynamicity - 2
           variable_speedup - 2   1.0                                                                                                            1.0



                                  0.5                                                                                                            0.5



                                  0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                              101316192225283134374043464952555861646770737679828588919497101
                                                121518212427303336394245485154576063666972757881848790939699
                                                                                                          100                                    0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                                             101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                               121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                                         100
                                                         100 iterations from 2,1000 to 202,1000                                                                         100 iterations from 2,1000 to 202,1000


                                               (a) speedup sur 2 coeurs                                                                            (b) dynamicit´ sur 2 coeurs
                                                                                                                                                                e

                                           7                                                                                                     3.5

                                           6                                                                                                     3.0

                                           5                                                                                                     2.5




                                                                                                                       variable_dynamicity - 2
                    variable_speedup - 2




                                           4                                                                                                     2.0

                                           3                                                                                                     1.5

                                           2                                                                                                     1.0

                                           1                                                                                                     0.5

                                           0 123456789111417202326293235384144475053565962656871747780838689929598
                                                     101316192225283134374043464952555861646770737679828588919497101
                                                       121518212427303336394245485154576063666972757881848790939699
                                                                                                                 100                             0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                                             101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                               121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                                         100
                                                                100 iterations from 8,1000 to 808,1000                                                                  100 iterations from 8,1000 to 808,1000


                                               (c) speedup sur 8 coeurs                                                                            (d) dynamicit´ sur 8 coeurs
                                                                                                                                                                e

                                                  Figure 12 – Mesure 2 en O(n) sur 2 et 8 coeurs




                                  2.0                                                                                                            2.0



                                  1.5                                                                                                            1.5
                                                                                                                       dynamicity - 3
           speedup - 3




                                  1.0                                                                                                            1.0



                                  0.5                                                                                                            0.5



                                  0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                              101316192225283134374043464952555861646770737679828588919497101
                                                121518212427303336394245485154576063666972757881848790939699
                                                                                                          100                                    0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                                             101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                               121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                                         100
                                                        100 iterations from 2,1000 to 2002,1000                                                                        100 iterations from 2,1000 to 2002,1000


                                               (a) speedup sur 2 coeurs                                                                            (b) dynamicit´ sur 2 coeurs
                                                                                                                                                                e

                                           8                                                                                                     3.0

                                           7
                                                                                                                                                 2.5
                                           6
                                                                                                                                                 2.0
                                                                                                                       variable_dynamicity - 3
                    variable_speedup - 3




                                           5

                                           4                                                                                                     1.5

                                           3
                                                                                                                                                 1.0
                                           2
                                                                                                                                                 0.5
                                           1

                                           0 123456789111417202326293235384144475053565962656871747780838689929598
                                                     101316192225283134374043464952555861646770737679828588919497101
                                                       121518212427303336394245485154576063666972757881848790939699
                                                                                                                 100                             0.0 123456789111417202326293235384144475053565962656871747780838689929598
                                                                                                                                                             101316192225283134374043464952555861646770737679828588919497101
                                                                                                                                                               121518212427303336394245485154576063666972757881848790939699
                                                                                                                                                                                                                         100
                                                               100 iterations from 8,1000 to 8008,1000                                                                 100 iterations from 8,1000 to 8008,1000


                                               (c) speedup sur 8 coeurs                                                                            (d) dynamicit´ sur 8 coeurs
                                                                                                                                                                e

                                                  Figure 13 – Mesure 3 en O(n) sur 2 et 8 coeurs

Contenu connexe

Tendances (19)

Guide latex.
Guide latex.Guide latex.
Guide latex.
 
Algo
AlgoAlgo
Algo
 
Langage c
Langage cLangage c
Langage c
 
Cours mecasol 0_2
Cours mecasol 0_2Cours mecasol 0_2
Cours mecasol 0_2
 
Sout3
Sout3Sout3
Sout3
 
Cours matlab
Cours matlabCours matlab
Cours matlab
 
1to8
1to81to8
1to8
 
Analyse numérique
Analyse numériqueAnalyse numérique
Analyse numérique
 
initiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesinitiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corriges
 
Cours processus- production
Cours processus- productionCours processus- production
Cours processus- production
 
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...Implémentation et mise en place d’un système décisionnel pour la solution Meg...
Implémentation et mise en place d’un système décisionnel pour la solution Meg...
 
Performances d’un système virtualisé avec v mware esxi
Performances d’un système virtualisé avec v mware esxiPerformances d’un système virtualisé avec v mware esxi
Performances d’un système virtualisé avec v mware esxi
 
Mmc
MmcMmc
Mmc
 
Rapport de Soutenance 1
Rapport de Soutenance 1Rapport de Soutenance 1
Rapport de Soutenance 1
 
9782212127829
97822121278299782212127829
9782212127829
 
Cours gestion-de-production
Cours gestion-de-productionCours gestion-de-production
Cours gestion-de-production
 
Batteries chargeur.fr
Batteries chargeur.frBatteries chargeur.fr
Batteries chargeur.fr
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
 
Exercices shell
Exercices shellExercices shell
Exercices shell
 

En vedette

Math BAC 2010_Correction
Math BAC 2010_CorrectionMath BAC 2010_Correction
Math BAC 2010_CorrectionAchraf Frouja
 
1516_Allard_Pierre_soutenance_stage
1516_Allard_Pierre_soutenance_stage1516_Allard_Pierre_soutenance_stage
1516_Allard_Pierre_soutenance_stagePierre Allard
 
Matrices
MatricesMatrices
Matricesbades12
 
Fstm deust mip-e141_cee_chap_iv_quadripôles
Fstm deust mip-e141_cee_chap_iv_quadripôlesFstm deust mip-e141_cee_chap_iv_quadripôles
Fstm deust mip-e141_cee_chap_iv_quadripôlesabdennaceur_baghdad
 
Exercices corrigés les matrices- djeddi kamel
Exercices corrigés les matrices- djeddi kamelExercices corrigés les matrices- djeddi kamel
Exercices corrigés les matrices- djeddi kamelKamel Djeddi
 
Cours 2 calcul numerique 2eme annees
Cours 2   calcul numerique 2eme anneesCours 2   calcul numerique 2eme annees
Cours 2 calcul numerique 2eme anneesTarik Taleb Bendiab
 
Composites à matrices metalliques
Composites à matrices metalliquesComposites à matrices metalliques
Composites à matrices metalliquesIsaac Durocher
 
La spécialité maths en Terminale S
La spécialité maths en Terminale SLa spécialité maths en Terminale S
La spécialité maths en Terminale SPhilippe Bancourt
 
Compta24 no restriction
Compta24 no restrictionCompta24 no restriction
Compta24 no restrictionhassan1488
 
Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1linuxscout
 

En vedette (20)

Panier3 em
Panier3 emPanier3 em
Panier3 em
 
Determinanant
DeterminanantDeterminanant
Determinanant
 
Math BAC 2010_Correction
Math BAC 2010_CorrectionMath BAC 2010_Correction
Math BAC 2010_Correction
 
1516_Allard_Pierre_soutenance_stage
1516_Allard_Pierre_soutenance_stage1516_Allard_Pierre_soutenance_stage
1516_Allard_Pierre_soutenance_stage
 
Matrices
MatricesMatrices
Matrices
 
Algebre
AlgebreAlgebre
Algebre
 
Matrices 2
Matrices 2Matrices 2
Matrices 2
 
Fstm deust mip-e141_cee_chap_iv_quadripôles
Fstm deust mip-e141_cee_chap_iv_quadripôlesFstm deust mip-e141_cee_chap_iv_quadripôles
Fstm deust mip-e141_cee_chap_iv_quadripôles
 
les matrices
les matricesles matrices
les matrices
 
Rapport
RapportRapport
Rapport
 
Exercices corrigés les matrices- djeddi kamel
Exercices corrigés les matrices- djeddi kamelExercices corrigés les matrices- djeddi kamel
Exercices corrigés les matrices- djeddi kamel
 
GEII - Ma3 - Matrices
GEII - Ma3 - MatricesGEII - Ma3 - Matrices
GEII - Ma3 - Matrices
 
Algébre(2)
Algébre(2)Algébre(2)
Algébre(2)
 
Cours 2 calcul numerique 2eme annees
Cours 2   calcul numerique 2eme anneesCours 2   calcul numerique 2eme annees
Cours 2 calcul numerique 2eme annees
 
Matrices 2
Matrices 2 Matrices 2
Matrices 2
 
Composites à matrices metalliques
Composites à matrices metalliquesComposites à matrices metalliques
Composites à matrices metalliques
 
La spécialité maths en Terminale S
La spécialité maths en Terminale SLa spécialité maths en Terminale S
La spécialité maths en Terminale S
 
Compta24 no restriction
Compta24 no restrictionCompta24 no restriction
Compta24 no restriction
 
Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1Algèbre de boole ionction-logique-p2-1
Algèbre de boole ionction-logique-p2-1
 
Compta analytique
Compta analytiqueCompta analytique
Compta analytique
 

Similaire à PMP Report

Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composantskarousn
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdfDendouga1
 
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...mouafekmazia
 
Polycope java enseignant
Polycope java enseignantPolycope java enseignant
Polycope java enseignanthnsfr
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfnesrine haloui
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64guestf223f9
 
Rapport de stage
Rapport de stageRapport de stage
Rapport de stagecbellisario
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITLina Meddeb
 
Base-de-données.pdf
Base-de-données.pdfBase-de-données.pdf
Base-de-données.pdfdjallel2
 

Similaire à PMP Report (20)

Analyse s1
Analyse s1Analyse s1
Analyse s1
 
Nagios
NagiosNagios
Nagios
 
Analyse2 00
Analyse2 00Analyse2 00
Analyse2 00
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
 
cours de Matlab
 cours de Matlab cours de Matlab
cours de Matlab
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdf
 
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
 
Polycope java enseignant
Polycope java enseignantPolycope java enseignant
Polycope java enseignant
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdf
 
Guide projet Iset
Guide projet IsetGuide projet Iset
Guide projet Iset
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
 
Jmc habile
Jmc habileJmc habile
Jmc habile
 
Poly
PolyPoly
Poly
 
C66
C66C66
C66
 
Cours10
Cours10Cours10
Cours10
 
Rapport de stage
Rapport de stageRapport de stage
Rapport de stage
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
Base-de-données.pdf
Base-de-données.pdfBase-de-données.pdf
Base-de-données.pdf
 
Theorie du signal
Theorie du signalTheorie du signal
Theorie du signal
 

Dernier

1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptxschneiderbeatrice78
 
Formation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distancielFormation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distancielM2i Formation
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?sashaflor182
 
Épreuve de leçon SII.pptx
Épreuve de leçon  SII.pptxÉpreuve de leçon  SII.pptx
Épreuve de leçon SII.pptxSAIDALI701276
 
Cahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdfCahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdfTOP AUTO CIV
 
Cours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurCours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurNdeyeAminataDond
 
Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016ImnaTech
 
Bilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxBilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxbibliogard
 
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Technologia Formation
 
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxSainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxMartin M Flynn
 
Résultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfRésultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfGERESO
 
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24BenotGeorges3
 
support de formation Consignation et déconsignation des energies et produits...
support de formation  Consignation et déconsignation des energies et produits...support de formation  Consignation et déconsignation des energies et produits...
support de formation Consignation et déconsignation des energies et produits...ABDELHADI ENNAIR
 

Dernier (13)

1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
 
Formation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distancielFormation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distanciel
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?
 
Épreuve de leçon SII.pptx
Épreuve de leçon  SII.pptxÉpreuve de leçon  SII.pptx
Épreuve de leçon SII.pptx
 
Cahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdfCahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdf
 
Cours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurCours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieur
 
Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016
 
Bilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxBilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptx
 
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
 
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxSainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
 
Résultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfRésultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
 
support de formation Consignation et déconsignation des energies et produits...
support de formation  Consignation et déconsignation des energies et produits...support de formation  Consignation et déconsignation des energies et produits...
support de formation Consignation et déconsignation des energies et produits...
 

PMP Report

  • 1. Parall´lisation & mod`les e e de programmation Caner Candan M2 MIHP 6 mars 2011 Table des mati`res e 1 Produit matriciel 2 ´ 1.1 Enonc´ . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 La diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.2 Le produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.3 L’impl´mentation e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 D´coupage d’un tableau binaire e 3 ´ 2.1 Enonc´ . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.1 D´terminer l’index . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.2 Cr´er le tableau binaire e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.3 Impl´mentation . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 Design 5 3.1 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Surcharge d’op´rateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 5 4 Mesure de performance 6 4.1 Pr´ambule . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . 6 4.2 Identifier les ressources les plus utilis´es e . . . . . . . . . . . . . . . . . . . . . . . 6 4.3 Pseudo-code de la fonction apply . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.4 La fonction en parall`le . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . 6 4.5 Speed-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.6 Mesures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.6.1 Fonctions objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.6.2 Benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.6.3 Dynamicit´ . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . 9 4.6.4 R´sultats en O(1) . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . 9 4.6.5 R´sultats en O(n) . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . 10 5 Conclusion 10 1
  • 2. 1 PRODUIT MATRICIEL 2 1 Produit matriciel 1.1 ´ Enonc´ e Matrice : D´crire un algorithme PRAM pour le mod`le EREW qui utilise O(n3 ) processeurs e e pour multiplier deux matrices de taille n ∗ n. 1 1.2 Solution Une solution consisterait ` diffuser dans un premier temps toutes les donn´es des matrices ` a e a multiplier ` chaque processus puis de faire le produit des matrices en prenant le soin que chaque a processus utilise les donn´es qui leur est propre. e 1.2.1 La diffusion En respectant le mod`le EREW, les matrices A et B ∈ Kn∗n sont copi´es, dans un premier e e temps, n fois dans les cubes A et B ∈ Kn∗n∗n . Ceci permet de r´server une dimension du cube e a ` un processus et ´viter toute lecture concurrente. e L’algorithme 1 pr´sente le pseudo-code de la fonction de diffusion qui prend comme donn´e e e en entr´e une matrice M ∈ Kn∗n et retourne un cube M ∈ Kn∗n∗n . Elle est exprim´e en e e 2 ´tapes. La premi`re consiste ` affecter, en utilisant O(n2 ) processeurs, chaque point de la e e a matrice dans la premi`re dimension du cube. La deuxi`me ´tape effectue la copie en diffusion 2 e e e de chaque point de la matrice situ´ ` la premi`re dimension du cube vers les autres dimensions ea e du cube en utilisant O(log n) processeurs et pour une matrice enti`re en O(n2 ∗ log n). e Donn´es : M ∈ Kn∗n , n ∈ N e R´sultat : M ∈ Kn∗n∗n e 1 d´but e 2 parall`le e 3 pour i ← 0 ` n faire a 4 parall`le e 5 pour j ← 0 ` n faire a 6 m (0, i, j) ← m(i, j) 7 parall`le e 8 pour s ← 0 ` log2 n faire a 9 parall`le e 10 pour h ← 0 ` s2 faire a 11 parall`le e 12 pour i ← 0 ` n faire a 13 parall`le e 14 pour j ← 0 ` n faire a 15 m (2s + h, i, j) ← m (h, i, j) 16 fin Algorithme 1 : Copie de matrice en diffusion n 1. cij = k=0 aik bkj : http://fr.wikipedia.org/wiki/Produit_matriciel 2. Hot potato routing : http://en.wikipedia.org/wiki/Hot_potato_routing
  • 3. ´ 2 DECOUPAGE D’UN TABLEAU BINAIRE 3 1.2.2 Le produit En appliquant le mod`le EREW, le produit matriciel prend en param`tre les cubes A et e e B ∈ Kn∗n∗n tel que chaque processus utilise sa dimension de cube respective pour lire les donn´es de aij et bij . e L’algorithme 2 pr´sente le pseudo-code de la fonction de produit matriciel qui prend comme e donn´e en entr´e les cubes A et B ∈ Kn∗n∗n et retourne une matrice C ∈ Kn∗n . L’affectation e e des valeurs dans la matrice C se fait en O(n2 ) et le produit de cij se fait en O(n). Donn´es : A, B ∈ Kn∗n∗n , n ∈ N e R´sultat : C ∈ Kn∗n e 1 d´but e 2 parall`le e 3 pour i ← 0 ` n faire a 4 parall`le e 5 pour j ← 0 ` n faire a 6 c(i, j) ← n a(p, i, k) ∗ b(p, k, j) k=0 7 fin Algorithme 2 : Produit matriciel 1.2.3 L’impl´mentation e Apr`s avoir d´crit la fonction de diffusion et le produit matriciel respectant tous deux le e e mod`le EREW, nous allons voir l’implementation d’un produit de deux matrices A et B ∈ Kn∗n e produisant une troisi`me matrice C ∈ Kn∗n . e L’algorithme 3 d´crit l’impl´mentation. e e Donn´es : A, B ∈ Kn∗n , n ∈ N e R´sultat : C ∈ Kn∗n e 1 d´but e 2 A ← dif f usion(A, n) 3 B ← dif f usion(B, n) 4 C ← produit(A , B ) 5 fin Algorithme 3 : Impl´mentation du produit matriciel e 2 D´coupage d’un tableau binaire e 2.1 ´ Enonc´ e D´coupage d’un tableau : Soit A un tableau de longueur n dont les ´l´ments sont soit des e ee 0 soit des 1. Concevez un algorithme EREW de complexit´ O(log n) utilisant O(n) processeurs e pour ranger tous les ´l´ments 1 ` la droite du tableau tout en maintenant leur ordre relatif ee a (propri´t´ de stabilit´ des ´l´ments). ee e ee Hint : effectuer un calcul de pr´fixe pour d´terminer quel devrait ˆtre la position de chaque e e e ´l´ment. ee
  • 4. ´ 2 DECOUPAGE D’UN TABLEAU BINAIRE 4 2.2 Solution Notre tableau ´tant binaire, contenant que des 0 et 1, il devient facile de compter le nombre e de 1 en sommant toutes les valeurs du tableau pour ensuite d´terminer ` quel index placer les e a 0 et 1. Toute fois pour respecter l’´nonc´ et avoir une complexit´ en O(log n), nous allons devoir e e e utiliser la fonction calculant la somme des pr´fixes. e 2.2.1 D´terminer l’index e L’algorithme 4 permet de d´terminer l’index qui constituera la fronti`re entre les 0 et 1 dans e e le tableau. Pour cela il prend en param`tre le tableau binaire B ∈ Kn ainsi que la taille du e tableau n ∈ N . Donn´es : B ∈ Kn , n ∈ N e R´sultat : i ∈ N e 1 d´but e 2 i ← n − calcul somme pref ixe(B) 3 fin Algorithme 4 : Trouver l’index 2.2.2 Cr´er le tableau binaire e L’algorithme 5 prend en param`tre l’index et la taille et cr´e un tableau binaire tri´ en e e e fonction de l’index, 0 ` gauche et 1 ` droite. a a Donn´es : i, n ∈ N e R´sultat : B ∈ Kn e 1 d´but e 2 parall`le e 3 pour j ← 0 ` i faire a 4 B (i) ← 0 5 parall`le e 6 pour j ← i ` n faire a 7 B (i) ← 1 8 fin Algorithme 5 : Cr´ation du tableau binaire tri´ e e 2.2.3 Impl´mentation e L’algorithme 6 illustre la solution. Donn´es : B ∈ Kn e R´sultat : B ∈ Kn e 1 d´but e 2 i ← trouver index(B) 3 B ← creer tableau binaire(i) 4 fin Algorithme 6 : D´coupage d’un tableau binaire e
  • 5. 3 DESIGN 5 3 Design Tous les exercices ont ´t´ d´velopp´s en C++ en utilisant le paradigme de programmation ee e e objet et le design qui suit a ´t´ ´labor´ pour regrouper les diff´rents composants de calculs. ee e e e N´anmoins une recherche a ´t´ effectu´ pour d´terminer les limites de OpenMP et C++. Il e ee e e semblerait que les conteneurs fournit par la STL 3 ne soient pas threadsafe 4 . Une ´tude 5 donne e une liste non-exhaustive des pr´cautions ` prendre lors de l’utilisation de OpenMP en C++. e a Cependant la version OpenMP 3.0 apporte des concepts nouveaux permettant l’utilisation no- tamment des iterateurs. On peut ainsi, par exemple, s’affranchir de simple indexeur de tableau et ´tendre la parall´lisation sur des listes chaˆ ees. e e ın´ 3.1 Diagramme de classes Figure 1 – Diagramme de classes Deux grandes familles d’op´ration coexistent. Elles sont pr´sent´es en figure 1. Les op´rations e e e e de calcul ` param`tre unique “OMPComputeUnary” et celles ` deux param`tres “OMPCompu- a e a e teBinary”. Tous deux renvoient un r´sultat. Elles sont pr´fix´es de “OMP” pour OpenMP 6 . Le e e e calcul de somme des pr´fixes prenant un seul param`tre en entr´e “OMPVector” et renvoyant e e e un “Atom”, cette classe se situe dans la famille “OMPComputeUnary”. Le produit matriciel se situe, quant ` lui, dans la famille “OMPComputeBinary”, cette classe prend deux param`tres a e “OMPMatrix” et retourne le mˆme type. On peut imaginer d’autres op´rations comme, par e e exemple, un produit vectoriel. 3.2 Surcharge d’op´rateur e Compte tenu des possibilit´s offertes par le langage C++, comme la surcharge des op´rateurs, e e l’op´rateur ∗ se voit ainsi surcharg´ dans la classe “OMPMatrix” afin d’appeler implicitement e e la classe “OMPMatrixProduct” pour le calcul du produit matriciel. Ainsi en ´crivant le code e C = A ∗ B ceci revient ` ´crire C = OM P M atrixP roduct()(A, B). ae 3. Standard Template Library : http://www.sgi.com/tech/stl/ 4. On dit qu’un programme ou qu’une portion de code est thread-safe s’il fonctionne correctement durant une ex´cution simultan´e par plusieurs threads (processus l´gers). http://fr.wikipedia.org/wiki/Threadsafe e e e 5. C++ and OpenMP : http://www.compunity.org/events/pastevents/parco07/parco_cpp_openmp.pdf 6. Open Multi-Processing : http ://openmp.org/
  • 6. 4 MESURE DE PERFORMANCE 6 4 Mesure de performance Je profite de ce rapport pour parler d’un travail qui m’a ´t´ demand´ en entreprise. Nous uti- ee e lisons le framework EO 7 pour d´velopper nos algorithmes ´volutionnaires 8 . Le sujet consistait e e a ` impl´menter, au framework EO, un parall´lisme ` m´moire partag´e en utilisant OpenMP. e e a e e 4.1 Pr´ambule e Avant de commencer il est important de pr´ciser que les EA 9 travaillent sur une population e d’individu aussi appel´ ´chantillon. Un individu ´tant repr´sent´ par un point dans l’´chantillon, ee e e e e la complexit´ d’un probl`me est d´finit par le nombre de dimensions pour chaque individu. e e e Le probl`me est repr´sent´ par la fonction objectif qui prend en param`tre un individu (un e e e e point dans l’´chantillon) et ´value toutes ses dimensions pour en d´duire la qualit´ 10 . La qualit´ e e e e e est le crit`re de comparaison d’un point dans son ´chantillon. e e 4.2 Identifier les ressources les plus utilis´es e Un test de profiling a ´t´ ex´cut´ afin d’identifier les ressources les plus utilis´es dans le ee e e e framework EO. Le test nous a permit d’identifier une fonction qui est utilis´e par une grande e majorit´ des op´rateurs 11 EO. Il s’agit de la fonction “apply”. Elle prend en param`tres une e e e population d’individu et un op´rateur. Cette fonction va it´rer sur tous les individus de la e e population et appliquer l’op´rateur. Il peut ˆtre int´ressant d’optimiser cette fonction. Nous e e e allons nous limiter ` transformer le code s´quentiel en parall`le. a e e 4.3 Pseudo-code de la fonction apply L’algorithme 7 prend en param`tre une population ainsi qu’un op´rateur ` appliquer ` e e a a chaque individu. Donn´es : P ∈ Kn , F ∈ Operateur e R´sultat : B ∈ Kn e 1 d´but e 2 pour i ← 0 ` n faire a 3 F (P (i)) 4 fin Algorithme 7 : La fonction apply 4.4 La fonction en parall`le e L’algorithme 8 transforme la fonction “apply” en parall`le en utilisant le mod`le PRAM e e CREW 12 et O(n) processeurs pour parcourir tous les individus de la population. 7. Evolving Object, http://eodev.sf.net 8. Algorithme ´volutionnaire : http://fr.wikipedia.org/wiki/Algorithme_evolutionnaire e 9. Algorithmes ´volutionnaires e 10. Fitness en anglais 11. Op´rateurs de s´lection et variation e e 12. Concurantial Read Exclusive Write
  • 7. 4 MESURE DE PERFORMANCE 7 Donn´es : P ∈ Kn , F ∈ Operateur e R´sultat : B ∈ Kn e 1 d´but e 2 parall`le e 3 pour i ← 0 ` n faire a 4 F (P (i)) 5 fin Algorithme 8 : La fonction omp apply 4.5 Speed-up Apr`s avoir cr´e la fonction alternative employant le parall´lisme ` m´moire partag´e, appel´ e e e a e e e “omp apply”, nous allons ´tudier une solution de mesure du speed-up 13 . e L’´quation, en figure 2, pr´sente une m´thode de mesure du speed-up et est impl´ment´e e e e e e dans l’algorithme 9. P,D M esure du Speedup = r Spkl k=0,l=0 Figure 2 – Mesure du Speedup Une description des param`tres est disponible dans la figure 3. e Param`tres e Description p la taille minimum de la population popStep le pas d’iteration de la population P la taille maximum de la population d la taille minimum de la dimension dimStep le pas d’iteration de la dimension D la taille maximum de la dimension r le nombre d’ex´cution pour chaque com- e binaison de p et d Figure 3 – Description des param`tres utilis´s e e 4.6 Mesures En prenant en compte les param`tres d´crits pr´c´demment, nous allons lancer les tests sur e e e e deux architectures mat´rielles diff´rentes pr´sent´ en figure 4. e e e e Pour visualiser l’´volution du speed-up, nous utilisons un outil de g´n´ration de graphiques 15 , e e e avec les donn´es produits par les tests. e T∗ 13. Sp = T1 : http://en.wikipedia.org/wiki/Speedup p 15. Utilisation de matplotlib en python pour g´n´rer des boites a moustache e e `
  • 8. 4 MESURE DE PERFORMANCE 8 Donn´es : p, P, popStep, d, D, dimStep, r ∈ N e 1 d´but e 2 pour k ← p ` P faire a 3 pour l ← d ` D faire a 4 pour m ← 0 ` r faire a 5 Ts ← 0 6 Tp ← 0 7 d´but e 8 t1 ← omp get wtime() 9 ... code sequentiel avec k et l ex´cut´ m fois ... e e 10 apply( ... ) 11 t2 ← omp get wtime() 12 Ts ← t2 − t1 13 fin 14 d´but e 15 t1 ← omp get wtime() 16 ... code parall`le avec k et l ex´cut´ m fois ... e e e 17 omp apply( ... ) 18 t2 ← omp get wtime() 19 Tp ← t2 − t1 20 fin Ts 21 ... on conserve le speed-up Tp pour k et l ... 22 fin Algorithme 9 : La fonction de mesure du speedup Processeur Nombre de coeurs Fr´quence e Cache L1 Intel Centrino vPro 2 2.40GHz 3072KB Intel Core i7 8 (hyperthreading 14 ) 2.67GHz 8192KB Figure 4 – Architectures mat´rielles e 4.6.1 Fonctions objectifs Il est important de simuler toutes les compl´xit´s de probl`mes que l’on peut ˆtre amen´ e e e e e a e ` r´soudre. Pour nos tests, le choix a ´t´ orient´ vers deux fonctions objectifs de complexit´ ee e e diff´rente pr´sent´ en figure 5. e e e Fonction objectifs Complexit´ en temps e Algorithme La fonction Sphere O(1) Sphere = n individuk k=0 Probl`me ` temps variable quelconque e a O(n) usleep(U (0, 1) ∗ 10) Figure 5 – Fonctions objectifs 4.6.2 Benchmark Pour faciliter et automatiser les tests, une liste de mesures a ´t´ ´labor´ avec les param`tres e ee e e d´crits pr´c´demment et un script contenant l’ensemble des tests ` ex´cuter a ´t´ cr´e. La liste e e e a e ee e des mesures est pr´sent´e en figure 6. e e
  • 9. 4 MESURE DE PERFORMANCE 9 Mesure Description 1 mesure pour toutes les combinaisons de P et D 2 mesure pour P ∈ [1, 101[ avec D = 1000 3 mesure pour P ∈ [1, 1001[ avec popStep = 10 et D = 1000 4 mesure pour D ∈ [1, 101[ avec P = 1000 5 mesure pour D ∈ [1, 1001[ avec dimStep = 10 et P = 1000 Figure 6 – Liste des mesures 4.6.3 Dynamicit´ e Parmi les optimisations possibles en OpenMP, il existe deux types de planification, la pla- nification statique, utilis´ par d´faut, divise le nombre de tˆches ` traiter ` tous les processus e e a a a disponibles et la planification dynamique maintient une file de tˆches trait´e au fur et ` mesure a e a par les processus disponibles. Nous ´valuons la dynamicit´ par le rapport entre une mesure de e e speedup en mode statique et une mesure de speedup en mode dynamique 16 . 4.6.4 R´sultats en O(1) e Le benchmark a ´t´ ex´cut´ dans un premier temps pour la fonction Sphere qui se r´soud en ee e e e temps constant. Les r´sultats de chaque mesure sont num´rot´s d’apr`s le tableau des mesures e e e e d´crit pr´c´demment. e e e Les mesures sont pr´sent´es en fonction des processeurs utilis´s et disponibles en figure 7, e e e 8, 9, 10 et 11. 2.0 2.0 1.5 1.5 dynamicity - 1 speedup - 1 1.0 1.0 0.5 0.5 0.0 13 6791115192327313539434751555963677175798387919599104110116 245 8112162024283236404448525660646872768084889296101107113119 014182226303438424650545862667074788286909498102108114120 13172125293337414549535761656973778185899397 103109115121 105111117 100106112118 0.0 13 6791115192327313539434751555963677175798387919599104110116 245 8112162024283236404448525660646872768084889296101107113119 014182226303438424650545862667074788286909498102108114120 13172125293337414549535761656973778185899397 103109115121 105111117 100106112118 100 iterations from 1,1 to 101,101 100 iterations from 1,1 to 101,101 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 2.5 7 6 2.0 5 1.5 dynamicity - 1 4 speedup - 1 3 1.0 2 0.5 1 0.0 13 6791115192327313539434751555963677175798387919599104110116 245 8112162024283236404448525660646872768084889296101107113119 014182226303438424650545862667074788286909498102108114120 13172125293337414549535761656973778185899397 103109115121 105111117 100106112118 0 13 6791115192327313539434751555963677175798387919599104110116 245 8112162024283236404448525660646872768084889296101107113119 014182226303438424650545862667074788286909498102108114120 13172125293337414549535761656973778185899397 103109115121 105111117 100106112118 100 iterations from 1,1 to 101,101 100 iterations from 1,1 to 101,101 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 7 – Mesure 1 en O(1) sur 2 et 8 coeurs Sp 16. Dynamicit´ : Dp = e d Sp
  • 10. 5 CONCLUSION 10 2.0 2.0 1.5 1.5 dynamicity - 2 speedup - 2 1.0 1.0 0.5 0.5 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1,1000 to 101,1000 100 iterations from 1,1000 to 101,1000 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 6 8 7 5 6 4 5 dynamicity - 2 speedup - 2 3 4 3 2 2 1 1 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1,1000 to 101,1000 100 iterations from 1,1000 to 101,1000 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 8 – Mesure 2 en O(1) sur 2 et 8 coeurs 4.6.5 R´sultats en O(n) e Dans un second temps, le benchmark est ex´cut´ pour le probl`me qui se r´soud en temps e e e e variable. Les r´sultats de chaque mesure sont num´rot´s d’apr`s le tableau des mesures d´crit e e e e e pr´c´demment en figure 6. e e Il est important d’ajouter que compte tenu de la r´solution du probl`me en O(n) et non e e plus en fonction de la dimension, celle ci perd de son importance. Ainsi les mesures 1, 4 et 5 ne sont plus nessaire ` mesurer. Seules les mesures 2 et 3 seront pr´sent´es ci-dessous. a e e Un algorithme s´quentiel ex´cut´ sur un processeur ` 8 coeurs en comparaison avec un pro- e e e a cesseur ` 2 coeurs est plus performant sur des petits ´chantillons. Nous avons donc choisit de a e d´finir les bornes des param`tres, d´crits en figure 6, comme multiple du nombre de coeurs e e e disponible. Les mesures sont pr´sent´es en fonction des processeurs utilis´s et disponibles en figure 12 e e e et 13. 5 Conclusion Pour un processeur ` 2 coeurs, selon la complexit´ du probl`me utilis´e, nous pouvons a e e e observer par la mesure du speedup que les ressources sont utilis´es au maximum 17 pour de e grandes tailles d’´chantillon. Les petites tailles d’´chantillon restant domin´es par une ex´cution e e e e s´quentielle. e Pour un processeur ` 8 coeurs, en hyperthreading, notre premi`re observation consiste ` a e a montrer les limites de l’hyperthreading, en effet nous utilisons pas plus de 4 coeurs. Et pour 17. cpu-bound
  • 11. 5 CONCLUSION 11 2.0 2.0 1.5 1.5 dynamicity - 3 speedup - 3 1.0 1.0 0.5 0.5 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1,1000 to 1001,1000 100 iterations from 1,1000 to 1001,1000 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 7 8 6 7 6 5 5 dynamicity - 3 4 speedup - 3 4 3 3 2 2 1 1 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1,1000 to 1001,1000 100 iterations from 1,1000 to 1001,1000 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 9 – Mesure 3 en O(1) sur 2 et 8 coeurs rejoindre ce qui a ´t´ dit sur 2 coeurs, un plus grand nombre de petites tailles d’´chantillon ee e reste domin´e par une ex´cution s´quentielle. e e e La diff´rence entre les deux complexit´s de probl`me s’observe dans la mesure de la dyna- e e e micit´. En effet pour un probl`me en O(1), la planification statique en OpenMP permet d’avoir e e une meilleur efficacit´ de travail tandis que en O(n), la planification dynamique apporte quelque e am´lioration. e Pour r´sumer nous avons compar´ par nos mesures les 2 types de planification de tˆches en e e a OpenMP, les 2 complexit´s de probl`mes que nous serons amen´ ` parall´liser et finalement sur e e ea e 2 types de processeurs diff´rents. e Un point que je n’ai pas eu le temps d’´claircir que j’invite ` regarder est l’utilisation de e a l’auto parall´lisation int´gr´ au compilateur GCC e e e 18 . Il s’agit d’un niveau d’optimisation qui consiste ` v´rifier la non d´pendance des donn´es dans les boucles et les parall´liser. a e e e e 18. Automatic Parallelization : http://gcc.gnu.org/wiki/openmp
  • 12. 5 CONCLUSION 12 2.0 2.0 1.5 1.5 dynamicity - 4 speedup - 4 1.0 1.0 0.5 0.5 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1000,1 to 1000,101 100 iterations from 1000,1 to 1000,101 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 6 7 5 6 5 4 dynamicity - 4 4 speedup - 4 3 3 2 2 1 1 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1000,1 to 1000,101 100 iterations from 1000,1 to 1000,101 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 10 – Mesure 4 en O(1) sur 2 et 8 coeurs 2.0 2.0 1.5 1.5 dynamicity - 5 speedup - 5 1.0 1.0 0.5 0.5 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1000,1 to 1000,1001 100 iterations from 1000,1 to 1000,1001 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 6 8 7 5 6 4 5 dynamicity - 5 speedup - 5 3 4 3 2 2 1 1 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 1000,1 to 1000,1001 100 iterations from 1000,1 to 1000,1001 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 11 – Mesure 5 en O(1) sur 2 et 8 coeurs
  • 13. 5 CONCLUSION 13 2.0 2.0 1.5 1.5 variable_dynamicity - 2 variable_speedup - 2 1.0 1.0 0.5 0.5 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 2,1000 to 202,1000 100 iterations from 2,1000 to 202,1000 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 7 3.5 6 3.0 5 2.5 variable_dynamicity - 2 variable_speedup - 2 4 2.0 3 1.5 2 1.0 1 0.5 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 8,1000 to 808,1000 100 iterations from 8,1000 to 808,1000 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 12 – Mesure 2 en O(n) sur 2 et 8 coeurs 2.0 2.0 1.5 1.5 dynamicity - 3 speedup - 3 1.0 1.0 0.5 0.5 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 2,1000 to 2002,1000 100 iterations from 2,1000 to 2002,1000 (a) speedup sur 2 coeurs (b) dynamicit´ sur 2 coeurs e 8 3.0 7 2.5 6 2.0 variable_dynamicity - 3 variable_speedup - 3 5 4 1.5 3 1.0 2 0.5 1 0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 0.0 123456789111417202326293235384144475053565962656871747780838689929598 101316192225283134374043464952555861646770737679828588919497101 121518212427303336394245485154576063666972757881848790939699 100 100 iterations from 8,1000 to 8008,1000 100 iterations from 8,1000 to 8008,1000 (c) speedup sur 8 coeurs (d) dynamicit´ sur 8 coeurs e Figure 13 – Mesure 3 en O(n) sur 2 et 8 coeurs