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 calcul parallèle


Sujet :

Threads & Processus C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 15
    Points
    15
    Par défaut OpenMP calcul parallèle
    Bonjour,

    Je travail sur un projet personnel utilisant une raspberry pi 2. J'aimerai pouvoir lancer deux fonctions en parallèles afin d'améliorer les performances de mon programme. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while(1)
    {
    //coeur 1 du processeur
    fonction_1()
     
    //coeur 2 du processeur
    fonction_2()
     
    //Attente de la fin d'execution des deux premières fonctions puis j'execute une troisième fonction
    fonction_3()
    }
    J'ai testé le code suivant en utilisant OpenMP, mais j'ai pas l'impression que cela fonction:

    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
     
     while(!fin)
        {   
    #pragma omp parallel
          {
    #pragma omp sections
    	{
    	  sleep(10);
    	  printf("ok\n");
    	}
    #pragma omp sections
    	{
    	  sleep(3);
    	  printf("ok2\n");
    	}
          }
    }
    Quand je teste j'ai l'impression d'avoir quelque chose de séquentiel et pas de parallèle, j'obtiens le résultat suivant:
    // attente 10s
    ok
    //attente 3s
    ok2

    alors que je voudrais :
    //debut de l'attente des 10s et des 3s
    ok2
    ok

    merci d'avance pour votre aide, si je ne suis pas claire n'hésitez pas

    Alex

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Tu actives bien OpenMP ?

    Sinon, ton code n'a pas l'air d'avoir la bonne forme : (cf doc)
    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
    void function1() {
       std::this_thread::sleep(10);
       std::cout << "1" << std::endl;
    }
     
    void function2() {
       std::this_thread::sleep(3);
       std::cout << "2" << std::endl;
    }
     
    void function3() {
       std::this_thread::sleep(1);
       std::cout << "3" << std::endl;
    }
     
    int main(int, char**) {
       #pragma omp parallel sections // starts a new team
       {
          { function1(); }
     
          // pas de 's' à section
          #pragma omp section
          { function2(); }
       }
       function3();
       return 0;
    }
    edit : pour ton code, ce qu'il se passe (presque sur ) :
    Actuellement, tu déclares 2 teams de sections, la 1ere contient 2 instructions devant s'exécuter séquentiellement (car appartenant à la même section), et la 2eme pareil.

    Tes 2 teams de sections doivent aussi s'exécuter séquentiellement (comportement par défaut).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    merci pour la réponse j'ai réussi à tous faire fonctionner et désolé de la réponse tardive

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

Discussions similaires

  1. [OpenMP] Introduction to OpenMP : une série de vidéos (en anglais) pour apprendre à utiliser l'API de calcul parallèle
    Par Jerome Briot dans le forum Programmation parallèle, calcul scientifique et de haute performance (HPC)
    Réponses: 4
    Dernier message: 03/02/2014, 22h04
  2. [OpenMP] OpenMP 4.0 : téléchargez les premiers exemples de la nouvelle API pour le calcul parallèle
    Par Jerome Briot dans le forum Programmation parallèle, calcul scientifique et de haute performance (HPC)
    Réponses: 0
    Dernier message: 13/11/2013, 09h12
  3. calcul parallèle et thread
    Par deb75 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 13/06/2007, 23h35
  4. livre gestion de la mémoire + calcul parallèle
    Par salseropom dans le forum C
    Réponses: 6
    Dernier message: 08/01/2007, 17h16
  5. calcul parallèle (débutant)
    Par Mrj dans le forum MFC
    Réponses: 1
    Dernier message: 08/12/2005, 12h06

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