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 :

Boucles dépendantes et OpenMP


Sujet :

Threads & Processus C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Par défaut Boucles dépendantes et OpenMP
    Bonjour

    J'aimerais paralléliser un parcours ligne/colonne d'une matricede taille assez conséquente (minimum 1000x1000 et ça doit encore augmenter).

    Le code que j'ai comprends naturellement deux boucles for imbriquées, mais pour les traitements à effectuer elle sont dépendantes l'une de l'autre.

    ex
    for (int i=0; i<1000;i++) {
    for (int j=i+1; j<1000;j++) {
    //traitement (conséquent !!)
    }
    }
    J'avais pensé à TBB mais il me semble que cela ne me soit pas accessible au vu de sa complexité (enfin pour le moment en tout cas), et puis elle n'est pas conseillée en cas de dépendance entre les boucles...

    Aussi, pour plus de facilité j'ai pensé à OpenMP, mais cette fois c'est cette dépendance qui m'arrête. Est-il possible qu'elle pose problème et que j'obtienne des résultats incorrects ?

    Si oui, autre question, comment pourrais-je modifier ces boucles afin de les rendre indépendantes l'une de l'autre ?

    Merci d'avance pour vos conseils !


    ps : toutes les données issue du "traitement" sont écrites dans un même vecteur.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut
    C'est un probleme d'algorithmique. Tu dois trouver comment fragmenter ton parcourt de matrice en x boucles independantes.
    Ensuite tu pourras facilement paralleliser ces x boucles.

    Bien sur tu pourrais lancer le parcours actuel sur n threads et mettre en pause chaque thread qui attendrait le resultat d'un autre thread. Mais ce serait ajouter en complexite et surtout le calcul risque d'etre plus lent qu'un parcour serie.

    Peux tu preciser la relation de dependance entre tes boucles? Peut etre que des lecteurs auront une idee.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Par défaut
    Okay, l'algo a été modifié.
    J'ai maintenant une boucle extérieure qui itère sur le nombre de cores (= nb de threads dans mon cas).

    J'aimerais pouvoir faire qqch du style :

    Si i=1 -> lancement thread 1 sur core 1
    Si i=2 -> lancement thread 2 sur core 2
    etc.

    i est l'indice de cette boucle extérieure.

    Quelles directives pourrais-je utiliser ?


    Mille mercis d'avance pour vos réponses/conseils

  4. #4
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    regarde du coté de omp section

Discussions similaires

  1. Paralleliser 5 boucles imbriquées avec OpenMP
    Par grut211 dans le forum Fortran
    Réponses: 4
    Dernier message: 26/02/2015, 14h51
  2. Performances OpenMP : parallélisation boucles
    Par ant12oine dans le forum Fortran
    Réponses: 11
    Dernier message: 03/12/2010, 13h09
  3. Pb OpenMP avec fonction + boucles
    Par Syens dans le forum Threads & Processus
    Réponses: 14
    Dernier message: 16/09/2010, 14h57
  4. Boucle Do parallele OpenMP
    Par zerbault dans le forum Fortran
    Réponses: 4
    Dernier message: 13/01/2010, 21h49
  5. parallélisation openmp boucles imbriquées
    Par black.scratch dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 13/07/2009, 12h52

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