IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Threads & Processus C++ Discussion :

Optimisation OpenMP (logique c'est fait pour)


Sujet :

Threads & Processus C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 27
    Points
    27
    Par défaut Optimisation OpenMP (logique c'est fait pour)
    Bonjour,
    Je n'arrive pas à utiliser OpenMP pour optimiser une méthode de classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    // la méthode filterRoutine de la classe FormManager permet d'appliquer
    // un succession de filtre (routine) à des images contenues dans l'objet FormManager
    void FormManager::filterRoutine(MiList<Filter_t> routine)
    {
           // l'objet _dataManager contient un liste d'"Examen", dont chaque examen
           // contient une liste d'image : donc parcours des examens, puis appel 
           // de la méthode Filter::ApplyRoutine(image, routine), qui applique la liste
           // des filtres pour une image, pour chaque image de chaque examen ...
     
           int dataManagerSize = _dataManager->getSize();
     
           // ...
     
           for (int e=0 ; e < dataManagerSize ; e++)
           {
                  int examenSize = _dataManager->getExamen(e)->getSize();
     
                  for (int s=0 ; s < examenSize ; s++)
                  {
     
                         Filter::ApplyRoutine(_dataManager->getSlice(e, s)->getImage(), routine);
                  }
           }
     
           // ...
    }
    Voilà, j'ai déjà essayer quelques trucs simples mais cela ne change rien niveau performance : je ne sais pas si le fais de travailler sur des objets ou autres choses nécessite des directives spéciales pour OpenMP.

    D'avance, merci pour votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    J'ai pas lu ton code mais voila 2 3 conseils.
    Essaye de déterminer déjà quelles tâches peuvent être faite indépendamment. Il y a 2 formes principales de parallélisme:
    - data parallelism: tu effectues x fois la même opération sur des donnés en même temps (exemple bête, incrémenter d'un toutes les cases d'un tableau d'int).
    - functional parallelism: tu effectues des traitements différents avec des entrées et sorties différentes.

    Tu peux essayer de dessiner ça sous forme de graphe de dépendance...
    Et après tu regardes un peu dans de la doc pour voir ce qu'il faut utiliser dans chaque cas...
    exemple de doc
    Et après tu peux commencer à optimiser un peu plus...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Dans mon cas c'est du "data parallelism" (si j'ai bien compris) : sauf qu'au lieu d'incrémenter des valeurs d'un tableau j’appelle une méthode sur les éléments du tableau (et aussi ce n'est pas un tableau mais plutôt une liste de liste ) ...
    Merci pour le lien, j'ai commencé à regarder et essayer différentes solutions mais pour l'instant sans résultats.
    Si d'autres personnes savent comment optimiser la petite partie de code dans le premier post (voir déjà si c'est possible), merci

Discussions similaires

  1. Ce forum est fait pour vous
    Par fafabzh6 dans le forum Contribuez
    Réponses: 0
    Dernier message: 14/05/2009, 15h25
  2. Réponses: 12
    Dernier message: 11/02/2009, 14h15
  3. Réponses: 11
    Dernier message: 15/02/2007, 17h11
  4. [Plugin][RCP]Welcome page...Comment c'est fait pour celle d'Eclipse???
    Par tophebboy dans le forum Eclipse Platform
    Réponses: 12
    Dernier message: 20/07/2006, 17h27
  5. Réponses: 4
    Dernier message: 18/05/2006, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo