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 :

OpenMP reduction en C++


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut OpenMP reduction en C++
    Bonjour,

    Dans un code C++, j'essaye d'utiliser la direction d'openMP 3.0 REDUCTION sur une variable de type tableau ou de type pointeur et cela me génére un erreur à la compilation:

    "'bb' has invalid type for 'reduction'"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      N=100;
      double bb[100];
      #pragma omp parallel for reduction(+:bb) 
      for (int i=0;i<N;i++) {
         bb[i]++;
      }
    Normallement depuis openMP 2.0 on peut faire des reduction sur tableau, ou alors il y a quelquechose qui m'echape.

  2. #2
    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
    bb[i]++ n'est pas une reduction.

  3. #3
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    ??

    Si je fais ce qui suit sur 4 processeurs j'obtient bien 100

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      N=100;
      double bb;
      #pragma omp parallel for reduction(+:bb) 
      for (int i=0;i<N;i++) {
         bb++;
      }
     
      printf("%d\n",bb)

  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
    bb++ deja c'est pas bb[i]++

    Une reduction comme son nom l'indique passe de N dimension a N-1 ce qui n'est pas le cas de ton code.

  5. #5
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Passer de bb++ à bb[i]++ était l'objet de ma question!
    Es-tu sure de bien saisir la directive "Reduction" de openMP. Son role est de paralléliser par reduction une operation comme l'addition par example. C'est bien ce que je fais ici.

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Réduction = par exemple somme des bb, pas bb[i]++ !

  7. #7
    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
    Citation Envoyé par uriotcea Voir le message
    Passer de bb++ à bb[i]++ était l'objet de ma question!
    Es-tu sure de bien saisir la directive "Reduction" de openMP. Son role est de paralléliser par reduction une operation comme l'addition par example. C'est bien ce que je fais ici.
    Non, la reduction serait de faire la somme de bb[i]. la tu incrementes chaque bb[i] separement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tentative de reduction de temps de calcul avec openMP: ECHEC
    Par Naneba dans le forum Threads & Processus
    Réponses: 8
    Dernier message: 20/02/2014, 14h08
  2. Probleme de reduction de fenetre
    Par gilles641 dans le forum API, COM et SDKs
    Réponses: 16
    Dernier message: 30/08/2005, 08h04
  3. reduction de fenetre
    Par bou3 dans le forum Windows
    Réponses: 2
    Dernier message: 22/06/2005, 10h46
  4. Fonction de reduction???
    Par zigg dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 03/11/2004, 13h59
  5. [QUICK REPORT] DESACTIVER LE BOUTON DE REDUCTION
    Par freud dans le forum Bases de données
    Réponses: 11
    Dernier message: 26/07/2004, 00h43

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