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 :

Erreur 1: error C3017: forme incorrecte du test de fin dans l'instruction 'for' OpenMP


Sujet :

Threads & Processus C++

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut Erreur 1: error C3017: forme incorrecte du test de fin dans l'instruction 'for' OpenMP
    Hey. Je ne comprends pas bien pourquoi j'ai pas le droit de mettre ça en condition dans ma boucle omp parallel for...
    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
     
    	bool flag = false;
    	int size = 100;
    	int i;
    	vector<int> a(size,-1), b(size,-1);
    #pragma omp parallel for
    	for(i = 0 ; (i < size) & !flag ; i++)
    	{
    		a[i] = i;
    		if(a[i] < b[i])
    		{
    			flag = true;
    			cout << " found it " << endl;
    		}
    		else cout << "not found" << endl;
    	}

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Parce que le test sur flag ne peut pas se faire lorsqu'on parrallélise la boucle. Le test sur size est simple : X threads vont s'exécuter N ou N+1 fois. Le test sur flag présuppose que toutes les threads peuvent le lire et l'écrire, hors on ne peut garantir sa valeur sans en protéger l'accès, ce que ne fait pas OMP - qui se contente principalement de réécrire la boucle.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    M. Emmanuel Deloget a raison, sous openmp su ne peut pas faire de tests directement dans la boucle sinon les noeuds vont provoquer un seg fault du au accès mémoire et au partage qui ne va pas être géré.

    Mais tu peut faire ce test en le découpant.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut merci
    Citation Envoyé par Emmanuel Deloget Voir le message
    Parce que le test sur flag ne peut pas se faire lorsqu'on parrallélise la boucle. Le test sur size est simple : X threads vont s'exécuter N ou N+1 fois. Le test sur flag présuppose que toutes les threads peuvent le lire et l'écrire, hors on ne peut garantir sa valeur sans en protéger l'accès, ce que ne fait pas OMP - qui se contente principalement de réécrire la boucle.
    dit comme ça c'est évident...
    Merci !

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

Discussions similaires

  1. [phpBB][2] Erreur : parse error
    Par TraNXenE200 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 08/04/2006, 13h19
  2. [VB]Erreur 6148 Numéro de zone incorrect
    Par dai.kaioh dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/01/2006, 10h30
  3. erreurs fatal error C1010 dans visual c++ 6.0
    Par screeminelle dans le forum MFC
    Réponses: 2
    Dernier message: 12/10/2005, 13h30
  4. Erreur : Provider error '80004005'
    Par krfa1 dans le forum ASP
    Réponses: 3
    Dernier message: 23/09/2005, 09h21
  5. Erreur Provider error '80004005'
    Par Samatouk dans le forum ASP
    Réponses: 7
    Dernier message: 11/01/2005, 00h20

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