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

C++ Discussion :

Impossible de faire fonctionner openMP


Sujet :

C++

  1. #1
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut Impossible de faire fonctionner openMP
    bonjour,

    Je n'ai pas de souci à // les boucles mais si j'essaye avec les sections je n'y arrive pas et ca fait un moment que je m'arrache les cheveux sur le bout de code ci-dessous

    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
     
     
    #pragma omp parallel
    {
    #pragma omp sections
    {
        #pragma omp section {
          printf ("id = %d, \n", omp_get_thread_num());
        }
        #pragma omp section {
          printf ("id = %d, \n", omp_get_thread_num());
        }
        #pragma omp section {
          printf ("id = %d, \n", omp_get_thread_num());
        }
    }
    }
    La réponse est invariablement

    id =0,
    id =0,
    id =0,

    Je ne comprend pas l'erreur !!

  2. #2
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    L'accolade est "mangée" par la macro.
    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
    29
    // gcc -Wall -Wextra -std=c99 -pedantic -fopenmp main.c -o main_c && ./main_c
     
    #include <stdio.h>
     
    #include <omp.h>
     
    int main ()
    {
    	#pragma omp parallel
    	{
    		#pragma omp sections
    		{
    			#pragma omp section
    			{
    				printf ("id = %d, \n", omp_get_thread_num());
    			}
    			#pragma omp section
    			{
    				printf ("id = %d, \n", omp_get_thread_num());
    			}
    			#pragma omp section
    			{
    				printf ("id = %d, \n", omp_get_thread_num());
    			}
    		}
    	}
     
    	return 0;
    }

  3. #3
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    Merci de votre réponse, mais je ne vois pas bien le sens de votre remarque!
    Cela dit, j'ai fini par trouver le problème. Ma routine était appelé dans une boucle elle même déjà parallélisée. Et je n'avais pas permis l'option "nested" dans openMP.

  4. #4
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Quand tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #pragma omp section {
        printf ("id = %d, \n", omp_get_thread_num());
    }
    L'accolade ouvrante { fait partie la macro #pragma omp section {. De ce fait, il y a une accolade fermante } de trop.

  5. #5
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    Ok, je n'avais pas réellement testé cette exemple.

  6. #6
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Généralement, on essaye de poster le bout de code minimal qui reproduit l'erreur Ça permet de :
    - faire des tests supplémentaires
    - isoler l'erreur
    - canaliser les questions (et les réponses)

  7. #7
    Membre averti 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
    Points : 444
    Points
    444
    Par défaut
    J'avais tester le code en question puisque j'indiquait la réponse qu'il me donnait en console.
    Ma question était d'ordre général sur l'utilisation des sections dans openMP avec ce bout de code comme illustration.
    Ce que je veux dire c'est que je ne m'attendais pas à ce quelqu'un regarde si cette illustration était compilable ou non, ce n'était pas la question posée.
    Désolé pour la méprise.

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

Discussions similaires

  1. [Requête] Impossible de faire fonctionner !
    Par Nesta92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/04/2007, 09h38
  2. Réponses: 5
    Dernier message: 05/12/2006, 23h57
  3. impossible de faire fonctionner le gridlayout
    Par oceane751 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 12/06/2006, 10h42
  4. Réponses: 5
    Dernier message: 22/03/2006, 10h39
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 09/12/2004, 14h27

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