Aller au contenu

débutant avec mpi


fahmi2008

Messages recommandés

Bonjour,

En fait je suis débutant en mpi et je l'ai installé sous machine ubuntu 8.10.

Commandes utuilisés : apt-get install mpich-bin mpich-mpd-bin mpich-shmem-bin mpi-doc et

apt-get install libmpich-mpd1.0-dev libmpich-shmem1.0-dev libmpich1.0-dev

Maintenant j'ai essayé de compiler et d'exécuter le simple programme de HelloWorld mais ça marche pas :

Lorsque je fait "mpicc -o hello hello.c" pour compiler ça me donne

helloC.c: In function ‘main’:

helloC.c:12: error: expected declaration specifiers or ‘...’ before ‘&’ token

helloC.c:12: error: expected declaration specifiers or ‘...’ before ‘&’ token

Je ne sais pas où est le pb.

mon code est:

/* C Example */
#include <stdio.h>
#include <mpi.h>


int main (argc, argv)
 int argc;
 char *argv[];
{
 int rank, size, 

 MPI_Init (&argc, &argv);	/* starts MPI */
 //MPI_Comm_rank (MPI_COMM_WORLD, &rank);	/* get current process id */
 //MPI_Comm_size (MPI_COMM_WORLD, &size);	/* get number of processes */
 printf( "Hello world from process"); //%d of %d\n", rank, size );
 MPI_Finalize();
 return 0;
}

Merci de m'aider.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos réponses.

EN fait, j'ai fait des modifs et le code devient

/* C Example */
#include <stdio.h>
#include <mpi.h>


int main (int argc,const char* argv)
 //int argc;
 //char *argv[];
{
 //int rank, size;

 MPI_Init (&argc, &argv);	/* starts MPI */
 //MPI_Comm_rank (MPI_COMM_WORLD, &rank);	/* get current process id */
 //MPI_Comm_size (MPI_COMM_WORLD, &size);	/* get number of processes */
 printf( "Hello world from process"); //%d of %d\n", rank, size );
 MPI_Finalize();
 return 0;
}

La compilation donne

"helloC.c: In function ‘main’:

helloC.c:12: warning: passing argument 2 of ‘MPI_Init’ from incompatible pointer type"

Merci encore pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

voila j'ai reussi à trouver un code qu'est bien compilé.

#include <stdio.h>
#include <mpi.h>

int main(int argc, char ** argv) {

 MPI_Init(&argc, &argv);
 // note that argc and argv are passed by address

 printf("Hello MPI!\n");

 MPI_Finalize(); 
}

Maintenant lors de l'exécution de ce code j'ai reçu ce message d'erreur :

0 - MPI_INIT : MPIRUN chose the wrong device ch_p4; program needs device ch_p4mpd

Segmentation fault

Je ne comprend pas la source de cette erreur.

Je travaille sur ma machine core duo en fait et j'exécute avec la simple commande "mpirun ./hello".

Merci encore.

Lien vers le commentaire
Partager sur d’autres sites

bonour,

quelqu modif a faire :

#include <stdio.h>
#include <mpi.h>

int main(int argc, char ** argv) {

 MPI_Init(&argc, &argv);
 // note that argc and argv are passed by address
/* les commentaires en C sont entre /* et */ a moins que tu soit en C99 mais il y a tres peut de compilo c99 */

 printf("Hello MPI!\n");

 MPI_Finalize(); 
/* on retourne une valeur en fin de main */
	return EXIT_SUCCESS;
}

pour la premiere syntaxe de main, ca marche c'est le style Kerniggan&Ritchie (K&R) bon c'est un peu obsolète m'enfin...

Pour le seg fault, si tu dois passer les arguments du main c'est que la fonction d init de MPI a besoin de paramètres pour s'initialiser proprement, donc de loin je dirais que soit tu ne passes pas de parametres, soit des mauvais.

La ce sont ceux que tu passe a ton propre programme qui sont envoyés, il doit falloir que tu appelles ton programme avec les bons arguments.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...