Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2999 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Parallèlisation d'un programme avec MPICH

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parallèlisation d'un programme avec MPICH

n°1452201
nathan_g
Posté le 04-10-2006 à 15:27:50  profilanswer
 

Bonjour,
 
Je cherche à réaliser un programme parallèle avec MPICH-1.2.7pl sur un cluster de trois machines.
Pour cela, j'ai déja repris un programme de test classique trouvé dans un tutorial pour vérifier que les machines communiquent entre-elles.
Néanmoins, j'ai déja un souci. En effet, le programme suivant :
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "mpi.h"
  4. #include <iostream>
  5. using namespace std;
  6. int main(int argc, char** argv)
  7. {
  8.   int my_rank;       /* Rank of process */
  9.   int p;             /* Number of processses */
  10.   int source;        /* Rank of sender */
  11.   int dest;          /* Rank of receiver */
  12.   int tag = 50;      /* Tag of messages */
  13.   char message[100]; /* Storage of message */
  14.   MPI_Status status; /* Return status for receive */
  15.   MPI_Init(&argc,&argv);
  16.   MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
  17.   MPI_Comm_size(MPI_COMM_WORLD,&p);
  18.   if (my_rank != 0)
  19.     {
  20.       sprintf(message,"Greetings from process %d",my_rank);
  21.       dest = 0;
  22.       /* Use strlen(message)+1 to include '\0' */
  23.       MPI_Send(message,strlen(message)+1,MPI_CHAR,dest,tag,MPI_COMM_WORLD);
  24.     }
  25.   else
  26.     {
  27.       /* rank = 0 */
  28.       for(source = 1;source < p; source++)
  29. {
  30.   MPI_Recv(message,100,MPI_CHAR,source,tag,MPI_COMM_WORLD,&status);
  31.   cout << "message" << endl;
  32. }
  33.     }
  34.   MPI_Finalize();
  35. }


 
ne me renvoie rien alors qu'il devrait donner le "message" à deux occasions, sur les 2 processeurs sur lesquels il est envoyé.
Ce qui m'inquiète en fait c'est que la variable " p " reste fixée à 1 dès le début du calcul, quand j'en demande la valeur, alors qu'elle devrait être égale à 3, le nombre de processeurs reliés entre eux.
 
Pourtant le fichier /usr/local/mpich-1.2.7pl/util/machines/machines.LINUX contient bien le nom des 3 machines visibles !
 
Sauriez-vous d'ou vient le problème ?
 
Merci d'avance de votre aide,
 
Nathan

mood
Publicité
Posté le 04-10-2006 à 15:27:50  profilanswer
 

n°1452270
franceso
Posté le 04-10-2006 à 16:25:53  profilanswer
 

tu peux poster la ligne de commande que tu utilises pour lancer le programme ?


---------------
TriScale innov
n°1453629
nathan_g
Posté le 06-10-2006 à 20:00:39  profilanswer
 

Je compile le programme par les commandes :
 
g++ -c main.C -I/usr/local/mpich-1.2.7pl/include
g++ -o main main.o -lmpich -L/usr/local/mpich-1.2.7pl/lib
 
et je lance simplement par :
 
main
 
Est-ce que c'est cela qui me pose problème ?

n°1453674
franceso
Posté le 07-10-2006 à 00:13:36  profilanswer
 

oui, c'est sans doute là qu'est ton problème.
 
* Il vaut mieux que tu compiles avec mpiCC (qui est juste un alias pour g++ avec les bonnes options ; tu sembles l'avoir bien fait à la main, mais c'est plus simple d'utiliser les outils fournis ;))
* Il faut que tu exécutes ton binaire avec mpirun (dont les options en ligne de commande te permettent de déterminer le nombre de processeurs à utiliser, etc.)
 


---------------
TriScale innov

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Parallèlisation d'un programme avec MPICH

 

Sujets relatifs
Programme en c++Envoyer une interruption à partir d'un programme Java
Lancer un programme depuis une page en PHP[C#.NET] Repertoire courant du programme, ya un raccourci ?
Win Api : L'utilisation du menu fait planter le programmeProgramme VB + ombres WindowFX
gérer du hardware avec un programme en Cbatch emplacement programme
lancer un programme externeMon premier programme c++... deja une erreur bisarre
Plus de sujets relatifs à : Parallèlisation d'un programme avec MPICH


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR