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 Qthread


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 Qthread
    Bonjour,

    J'ai quelques soucies avec openMP. Si je fais ca dans le main de mon code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
       omp_set_num_threads(3);
       #pragma omp parallel
       printf("Hello, world.\n");
    j'obtient bien 3 fois "Hello.."

    Mais si je fais de m�me dans un thread // par example un QThread issue de Qt4.5 ca plante diectement � la premiere ligne.
    Cela signifie-t-il que l'on ne peut utiliser les directive openMP que dans le thread principale ?
    Si quelqu'un � quelques exp�riences de openMP je suis preneur

    Merci d'avance

  2. #2
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    printf n'est normalement pas thread safe. D'o� le plantage � mon avis.
    Essai,
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    omp_set_num_threads(3);
    #pragma omp parallel
    qDebug() <<"Hello, world.\n";
    pour voir

  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
    C'est l'example fournit avec openMP et ca plante d� la pr�miere fonction "omp_set_num_threads" avant m�me d'arriver au fprint

  4. #4
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    sous visual, ceci marche

    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
    28
    #include <QtGui>
    #include <omp.h>
     
    class thread : public QThread
    {
        void run()
        {
            omp_set_num_threads(5);
            #pragma omp parallel
            qDebug() <<"Hello, world_thread.\n";
        }
    };
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc,argv);
     
     
        omp_set_num_threads(3);
        #pragma omp parallel
        qDebug() <<"Hello, world.\n";
     
        thread t;
        t.start();
        t.wait();
     
        return 0;
    }

  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, je viens d'essayer sous linux et ca fonctionne bien. Je ne sais pas quel est mon probleme sous windows. Je n'ai pas du inclure la bonne librairie pthread ou quelquechose comme ca.
    Je vais explorer ca
    Merci encore

  6. #6
    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
    Ok je viens de tester ton example et j'ai moi ca plante sur la ligne "omp_set_num_threads(5)" dans le thread. Je ne comprend pas ce qui se passe.
    Alors je suis en Qt4.5.3, gcc4.4.0, lib Qt en static , pthread et libgomp en static aussi. Qu'en est-il pour toi ?

  7. #7
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    Je ne sait pas trop o� en est le dev de openmp sous mingw. C'est peut �tre juste cela.
    comme je t'ai dit, j'ai juste test� sous visual sans probl�me...

  8. #8
    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
    Ca me parait ok puis que cela fonctionne bien sous le main. Et puis cela semble eprouv� depuis un moment d'apres mes longues recherches sur le web.

    Une question que je me pose tout de m�me. n'aurais-je pas due compiler mes lib Qt qui sont en static avec l'option -fopenmp

  9. #9
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    Citation Envoy� par uriotcea Voir le message
    Une question que je me pose tout de m�me. n'aurais-je pas due compiler mes lib Qt qui sont en static avec l'option -fopenmp
    y as pas de raison.

  10. #10
    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
    Bon je viens d'essayer avec une verison de Qt en dll, ce ne change effectivement rien.
    Je suis un peu d�sesper� l�...
    Je plaisante mais c'est gal�re ce truc. Je vais essayer le dernier gcc 4.4.2 je crois

  11. #11
    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
    Rien � faire m�me avec la dernier version de gcc. L� je suis au bord du gouffre...

  12. #12
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    Citation Envoy� par uriotcea Voir le message
    Rien � faire m�me avec la dernier version de gcc. L� je suis au bord du gouffre...
    Si je ne me trompe pas, tu as deux fa�on de sp�cifi� le nombre de thread. Soit avec la fonction que tu veut utiliser, soit dans le #pragma. Essai de voir si la deuxi�me peut fonctionner.

  13. #13
    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
    Non, d� qu'il rencontre un bloc // dans le thread ca plante.
    Bon j'ai simplifi� le programme de mani�re � m'afranchhir de Qt, ca donne ca:

    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
     
    #include <stdio.h>
    #include <omp.h>
    #include <pthread.h>
     
     
    void *myThreadEmit(void *arg)
    {
      printf("start thread.\n");
      #pragma omp parallel
      printf("Hello, world_thread.\n");
    }
     
     
    int main(int argc, char *argv[])
    {
      pthread_t tid;
     
      omp_set_num_threads(3);
      #pragma omp parallel
      printf("Hello, world.\n");
      pthread_win32_process_attach_np();
      pthread_create(&tid,NULL, myThreadEmit, NULL);
      pthread_join(tid,NULL);
      return 0;
    }
    Et malheureusement ca plante toujours apr�s la ligne "start thread". Je compile ca sous gcc4.4.0 avec l'option "-m32 -fopenmp" . Alors si quelqu'un pouvait essayer pour me dire si ca fonctionne chez lui, ce serai pas mal

  14. #14
    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
    Bon j'ai deja essay� avec gcc4.4.1 sans succ� alors je suis revenu � le une plus veille gcc4.3.3 et c'est pareil.

    Personne ne pourrait tester ce petit bout de code et me dire ce qu'il en est chez lui. Je met un petit zip contenant le cpp et make file

    Je suis sous windows Xp et ca fonctionne tr�s bien sous linux
    Fichiers attach�s Fichiers attach�s

  15. #15
    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
    J'ai cru comprendre que printf n'etait pas thread safe, alors j'ai r�ecirt les choses mais ca plante toujours sous windows quelquesoit la version de gcc.

    Vraiment personne pour tester ce petit bout de code ?

    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
     
    #include <iostream>
    #include <pthread.h>
    #include <omp.h>
     
    void *myThreadEmit(void *)
    {
      std::cout << "start thread.\n";
      #pragma omp parallel
      std::cout << "Hello, world in thread.\n";
      return(NULL);
    }
     
    int main(int argc, char *argv[])
    {
      pthread_t tid;
      #pragma omp parallel
      std::cout << "Hello, world.\n";
      pthread_create(&tid,NULL, myThreadEmit, NULL);
      pthread_join(tid,NULL);
      return 0;
    }

  16. #16
    screetch
    Invit�(e)
    Par d�faut
    je l'ai teste chez moi, Windows 7 avec GCC 4.3.0 et 4.4.0 ca n'a pas march�

  17. #17
    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
    Ca � plant� au m�me endroit que moi, ou tu n'as pas r�ussi � compiler ?

  18. #18
    screetch
    Invit�(e)
    Par d�faut
    meme erreur que toi

  19. #19
    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
    Ok, je n'arrive pas � m'expliquer ce truc l�, c'est plut�t basic comme example, ou alors j'ai oubli� une initialisation essentielle quelquepart !

  20. #20
    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
    L� je suis vraiment coinc�, ca fait 2 jours que je gal�re avec ce probl�me. J'ai une grosse application de calcul bas�e sur un GUI qui lance le calcul via un Thread et je ne peux changer cette architecture. J'ai commenc� � utiliser openMP sous linux avec succes et l� tout mon boulot et � jetter si je n'arrive pas � le porter sous windows.
    Je ne vois pas par quoi remplacer openMP, si quelqu'un � des suggestions pour une librairie plus stable, je suis preneur

    Merci d'avance

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 3 123 Derni�reDerni�re

Discussions similaires

  1. GCC PTHREAD OPENMP MACOSX
    Par epsilon68 dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 30/11/2007, 01h46
  2. Qt macosx gcc & icc openmp
    Par epsilon68 dans le forum Programmation parall�le, calcul scientifique et de haute performance (HPC)
    R�ponses: 34
    Dernier message: 29/10/2007, 11h07
  3. TBB vs OpenMP
    Par yan dans le forum C++
    R�ponses: 3
    Dernier message: 24/08/2007, 00h30
  4. OpenMP & Library
    Par uriotcea dans le forum C++
    R�ponses: 8
    Dernier message: 04/10/2006, 22h16
  5. OpenMP sous Visual 2005
    Par teddy fredaigues dans le forum MFC
    R�ponses: 6
    Dernier message: 19/01/2006, 14h43

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