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 :

pour les connaisseurs de mpi


Sujet :

C++

  1. #1
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut pour les connaisseurs de mpi
    bonjour,voila mon probleme
    ce code ne marche pas car il me renvoie a=0
    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
     
    int a,b;
    #include <stdio.h>
    #include <mpi.h>
     
    int main( int argc, char* argv[])
    {
    int rang, p, valeur, tag = 10;
    MPI_Status status;
    /* Initialisation */
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD, &p);
    MPI_Comm_rank(MPI_COMM_WORLD,&rang);
    if ( rang == 0) {
     
    printf("J’ai recu la valeur %d du processus de rang 1",a);
    }
    else if ( rang == 1 )
    { a=22;
    			MPI_Bcast (&b,1 , MPI_INT, 1,MPI_COMM_WORLD);
     
    }
    MPI_Finalize();
    return 0;
    }
    par contre ce code fonctionne et me retoure la valeur de a=22
    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
     
    int a,b;
    #include <stdio.h>
    #include <mpi.h>
     
    int main( int argc, char* argv[])
    {
    	a=22;
    int rang, p, valeur, tag = 10;
    MPI_Status status;
    /* Initialisation */
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD, &p);
    MPI_Comm_rank(MPI_COMM_WORLD,&rang);
    if ( rang == 0) {
     
    printf("J’ai recu la valeur %d du processus de rang 1",a);
    }
    else if ( rang == 1 )
    { 
    			MPI_Bcast (&b,1 , MPI_INT, 1,MPI_COMM_WORLD);
     
    }
    MPI_Finalize();
    return 0;
    }
    dans le 2ème code juste j'ai changé l'emplacement de la variable a
    pourtant je veux initialisé la variable a dans le processus num 1

    alors comment de dois faire
    aidez moi svp
    merci

  2. #2
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    up,
    les gars un coup de main svp

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut.
    Il ne manquerai pas une boucle??
    Sinon :
    - code1 : a est initialisé que si rang == 1. Il ne sera donc jamais uinitialisé si range =0. Tu as de la chance que ce soit 0( mode debug non)
    - code2 : a est initialisé au début du main

  4. #4
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    bonjour,
    je sais que:
    code1 : a est initialisé que si rang == 1.,c'est justement que je voudrais faire,
    initialisé si rang==1 puis l'envoyé vers les autres rang.
    alors comment faire
    merci

  5. #5
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Points : 67
    Points
    67
    Par défaut
    up please help

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    salut.
    Pourcommencer il y as un problème dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD, &p);
    MPI_Comm_rank(MPI_COMM_WORLD,&rang);
    if ( rang == 0) {
     
    printf("J’ai recu la valeur %d du processus de rang 1",a);
    }
    ou "a" aurait pu etre initialisé????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    else if ( rang == 1 )
    { a=22;
    			MPI_Bcast (&b,1 , MPI_INT, 1,MPI_COMM_WORLD);
     
    }
    quand envoie tu "a"????

    Comprend tu le problème??

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Est-ce qu'il ne serait pas nécessaire de rajouter un MPI_Recv dans ton process 0 pour capturer le message envoyé (par MPI_Bcast) par le process 1?

    quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Initialisation de MPI
     
    if (rang =0){
     
    MPI_Recv
    printf
    }
     
    else{ //rang=1
    a=22
     
    MPI_Bcast
    }

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

Discussions similaires

  1. petite question pour les connaisseurs de l'IPC
    Par rickou73 dans le forum C
    Réponses: 5
    Dernier message: 24/06/2014, 21h20
  2. pour les utilisateur de MPI
    Par yan dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 02/04/2008, 16h21
  3. Probleme pour les insertion au format etranger
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/03/2003, 10h55
  4. Réponses: 2
    Dernier message: 08/10/2002, 18h26
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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