Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1699 connectés 

  FORUM HardWare.fr
  Programmation
  C

  optimisation de code

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimisation de code

n°2277507
runner15
Posté le 11-03-2016 à 22:33:14  profilanswer
 

bonjour à tous j'ai un soucis qui me prend la tete et j'ai besoin d'aide et c'est vraiment vraiment urgent.toute aide est la bien venu.merci d'avance
 
soit le code suivant:
 
Etudier et optimisé la fonction C suivante:
 
float baseline  (int n , double a[ n ][ n ])  
 
{
     int i , j ;
     float s = 1.0;
 
     for ( j =0; j < n ; j ++)
          for ( i =0; i < n ; i ++)
               s += a [ i ][ j ];
 
return s ;
 
}
 
 
Phase I
=======
1) Ecrivez un driver permettant de mesurer la performance du noyau
 
2) Compilez le noyau avec gcc -O2
 
3) Mesurez la performance du noyau
 
4) Recommencez avec gcc -O3, gcc -O3 -march=native, icc -O2, icc -O3 et
icc -O3 -xHost.
 
5) Recommencez avec d'autres options d'optimisation qui vous
sembleraient pertinentes (vous devrez les chercher dans la documentation de gcc et d'icc), que vous pourrez combiner entre elles...
 
6) Expliquez les différences de performances entre versions avec MAQAO
(*) et likwid-perfctr (**)
 
7) Question indépendante des 6 premières : justifiez les points
d'implémentation du driver susceptibles d'impacter les mesures. Vous en
ferez notamment une analyse de sensibilité (montrez par exemple
qu'augmenter un paramètre au-delà d'une certaine limite a un impact
négligeable...)
 
Phase II
========
0) Configurez la compilation selon le sujet (à défaut, gcc -O2)
 
1) Mesurez la performance du noyau
 
2) Analysez le noyau avec MAQAO (*) et likwid-perfctr (**)
 
3) Identifiez le goulet d'étranglement (ce qui limite les performances)
 
4) Proposez une optimisation (au niveau source)
 
5) Recommencez (rebouclez à l'étape 1) tant que vous arrivez à
améliorer les performances. Vous pouvez soit repartir du noyau non
optimisé, soit d'un noyau précédemment optimisé
 
6) Une fois (mais pas avant) que vous n'arrivez plus à obtenir de gain,
notez bien les performances correspondantes ainsi que toutes les étapes
qui vous ont permis d'y arriver puis relâchez la contrainte sur la
compilation : vous pouvez alors utiliser des options plus agressives
ou/et un autre compilateur => rebouclez à l'étape 1 jusqu'à ne plus
obtenir de gain supplémentaire
 
7) Utilisez des directives OpenMP pour paralléliser votre noyau. S'il
ne vous semble pas parallélisable, expliquez pourquoi, et comment on
pourrait malgré tout le paralléliser (avec degré de concurrence moindre, autre algorithme etc.)
8) Question facultative (1 à 2 points bonus) : Utilisez des intrinsics
pour écrire/optimiser le code (niveau avancé), voire modifiez
directement l'assembleur (niveau expert).

mood
Publicité
Posté le 11-03-2016 à 22:33:14  profilanswer
 

n°2277510
Modération
Posté le 11-03-2016 à 23:36:46  answer
 

Voir le règlement du forum programmation, section 0C.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  optimisation de code

 

Sujets relatifs
[RESOLU] [VBA] - EXCEL 2010 - Optimisation de code[VB6] Simplification et optimisation code
Optimisation du codeOptimisation code php
[VBA] Optimisation de codeoptimisation SSE pour du code C (auto ou inline) [résolu]
optimisation du code c++Optimisation de code javascript
Code simple, optimisation possible?Optimisation d'un code VBA pour excel
Plus de sujets relatifs à : optimisation de code


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR