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++

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 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 ?

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

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