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

SL & STL C++ Discussion :

Envoit vector<int> MPI


Sujet :

SL & STL C++

  1. #21
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    non celui que j'ai corrigé. Ton exemple ne peut pas marcher. Tu n'as pas initialisé la taille du vector.
    Comprend tu le principe de fonctionnement???



    Si tu ne répond pas a mes questions ( ca commence à s'accumuler) on ne pourra pas t'aider.
    De plus, arrête les multi poste, stp...
    oui je comprends le principe .
    pour l'exemple je parle de celui corrigé avec l'initialisation, pour moi ça marche pas .le re voila
    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
    30
    31
    32
    33
    34
     
    #include <stdio.h>
    #include <mpi.h>
    #include <iostream>
    #include<vector>
     
    using namespace::std;
    #define MPICH_SKIP_MPICXX 
    int main( int argc, char* argv[])
    {
    vector<int> v(4);
    	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) {
    v.push_back(55);
    v.push_back(56);
    v.push_back(57);
    v.push_back(58);
     
    MPI_Send(&v[0],v.size(),MPI_INT,1,50,MPI_COMM_WORLD);
    }
    else if ( rang ==1)
    {
    MPI_Recv(&v[0],v.size(),MPI_INT,0,50,MPI_COMM_WORLD,&status);	
    cout<<"v1= "<<v[1];
    }
     
    MPI_Finalize();
    return 0;
    }

  2. #22
    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
    Citation Envoyé par fatjoe Voir le message
    oui je comprends le principe .
    pour l'exemple je parle de celui corrigé avec l'initialisation, pour moi ça marche pas .le re voila
    .... CE N'EST PAS LE CORRIGE....
    y as pas ca dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    v.push_back(55);
    v.push_back(56);
    v.push_back(57);
    v.push_back(58);
    donc oui ton code code marche pas. Avant l'envoie du tableau tu agrandi ton tableau à 8 alors que l'execution fille attend un tableau de 4

  3. #23
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    ce code marche merci beaucoup vraiment
    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
    30
    31
     
    #include <stdio.h>
    #include <mpi.h>
    #include <iostream>
    #include<vector>
    using namespace::std;
    int main( int argc, char* argv[])
    {
    vector<int> v(4);
    	int rang,p;
    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) {
     
     
    v[0]=55;
    v[1]=56;
    v[2]=57;
    v[3]=58;
    MPI_Send(&v[0],v.size(),MPI_INT,1,50,MPI_COMM_WORLD);
    }else if(rang==1)
    {MPI_Recv(&v[0],v.size(),MPI_INT,0,50,MPI_COMM_WORLD,&status);
    cout<<"v1= "<<v[1];
    }
     
    MPI_Finalize();
    return 0;
    }
    t'es génial mec

  4. #24
    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
    Citation Envoyé par fatjoe Voir le message
    ce code marche merci beaucoup vraiment
    Comprend tu l'erreur que tu avais fait????

  5. #25
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    en fait c bizarre car v.pushback est juste , elle sert à remplir le vector, je sais pas pourquoi v[0]=1; fonctionne et pushback ne fonctionne pas.
    c ça mon erreur non?

  6. #26
    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
    Citation Envoyé par fatjoe Voir le message
    en fait c bizarre car v.pushback est juste , elle sert à remplir le vector, je sais pas pourquoi v[0]=1; fonctionne et pushback ne fonctionne pas.
    c ça mon erreur non?
    C'est la première.
    la fonction push_back ajoute la valeur dans le vector,en l'agrandissant,a la fin. Ce que je fais, je créé un vector de 4 elements et je l'initialise
    Cherche vector dans le forum. Tu trouvera beaucoup d'info et d'expliquation.

    T'as deusième, je pense que tu n'as pas trop compris comment se passe l'execution de mpi, non?
    Pour chaque process, ton exe est executé independament l'un des autres. Donc ce qui passe dans l'un n'as pas de repercution dans les autres. Sauf ,si tu veut ,les échanges par MPI.
    Ainsi, ton code avec les push_back tu as :
    PREMIER INSTANCE DE L'EXE
    1- tu utilise un tableau vide
    2-ajoute 4 elements. Ton tableau fait maintenant 4
    3- tu envoie un tableau de 4 elements

    DEUSIEME INSTANCE DE L'EXE
    tu utilise un tableau vide => tu va attend un buffer de taille 0 => erreur

  7. #27
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    un grand merci à vous.
    je comprends maintenant l'erreur

Discussions similaires

  1. [MPI] taille du message d'envoit
    Par Jeane dans le forum C++
    Réponses: 2
    Dernier message: 22/08/2007, 20h35
  2. Caster en int le contenu d'un vector
    Par MinsK dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2007, 16h59
  3. MPI: envoit d'un string
    Par Jeane dans le forum C++
    Réponses: 7
    Dernier message: 15/05/2007, 17h47
  4. tri sur std::vector<std::pair<int, float> >
    Par b4u dans le forum SL & STL
    Réponses: 15
    Dernier message: 01/10/2006, 09h19
  5. Transformation d'un vector en int !
    Par casafa dans le forum SL & STL
    Réponses: 12
    Dernier message: 08/04/2005, 22h25

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