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 et perte de memoire


Sujet :

Threads & Processus C++

  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 et perte de memoire
    Bonjour,

    Durant un calcul si je m'ammuse à changer le nombre de threads d'un boucle à l'autre comme l'example ci-dessous la mémoire du programme ne fait que crimper jusqu'au crach final

    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
     
      double e,c;
      bool ii=false;
      omp_set_num_threads(8);
      for (int i=0;i<100000;i++) {
        // changement du nbr de threads pour test
        if (ii) omp_set_num_threads(8); else omp_set_num_threads(4);
        ii=!ii;
        e=1;
    #pragma omp parallel for private(c,d) reduction(+:e)
        for (int j=0;j<1000;j++) {
          c-=10.36-2.4*j;
          e=e+cos(c);
          if (j==0) printf("%d",omp_get_num_threads());
        }
        if (e==123) printf("version:%d\n",_OPENMP); // just pour forcer le calcul de e
      }
    Si je supprime la ligne de changement du nbr de threads, la mémoire n'augmente pas continuellement.

    Si quelqu'un voit le probleme je suis preneur, ca fait quelques heures que je galére.

  2. #2
    screetch
    Invité(e)
    Par défaut
    probablement un leak memoire dans omp_set_num_threads()

  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
    Je ne suis pas sure, parce que deja sous linux je n'ai pas le probleme, c'est uniquement sous windows. Ensuite si je passe de 8 à 1, je n'ai pas de soucie non plus. A mon avis ce serait peut-etre la librairie pthread qui aurait peut-etre un leak au moment ou le pool de thread est réinitialisé. Enfin quelquechose comme ca.
    Le probleme est que sous windows je n'ai pas d'outil pour surveiller la mémoire comme sous linux avec valgrind.

  4. #4
    screetch
    Invité(e)
    Par défaut
    http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
    tu peux verifier que tu es bien dans "omp_in_parallel() == true"

  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
    Oui j'y suis bien et j'affiche en dynamic omp_get_num_threads() pour m'en assurer. Je passe bien de 8 à 4, ainsi de suite.

  6. #6
    screetch
    Invité(e)
    Par défaut
    ah oui sinon je ne sais pas si tu te rappelles mais on avait changé une ligne dans le code :
    http://www.developpez.net/forums/d82...d/#post4766491

    ca créait volontairement un leak pour voir si ca permettait de contourner le probleme. Tu as gardé cette ligne modifiée peut etre ?

  7. #7
    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
    Oui maintenant je me souvient et c'est effectivement ca le probléme. ca fonctionne nickel maintenant.
    Merci de m'avoir rafraichi la mémoire

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

Discussions similaires

  1. Bonjour Perte de memoire.
    Par malreVid dans le forum Android
    Réponses: 4
    Dernier message: 23/01/2014, 19h02
  2. Perte de memoire avec mingw et pthread ou openMP
    Par uriotcea dans le forum Threads & Processus
    Réponses: 0
    Dernier message: 10/03/2010, 13h45
  3. Probleme perte memoire
    Par on2101 dans le forum MFC
    Réponses: 2
    Dernier message: 25/08/2009, 01h49
  4. Msxml : perte memoire ?
    Par jcd29 dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/06/2009, 12h42
  5. Perte de memoire vive
    Par vg-matrix dans le forum Composants
    Réponses: 1
    Dernier message: 01/10/2008, 10h33

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