2008-12-07 10 views
7

J'ai un programme C++ qui utilise la bibliothèque openMPI pour transmettre des messages entre différents processeurs. C'est un programme parallèle qui utilise un algorithme génétique pour obtenir une bonne solution pour le problème du vendeur itinérant. J'essaye de configurer l'environnement MPI sur mes deux ordinateurs biprocesseurs chez moi pour que je puisse l'exécuter. La première fois que j'ai créé ce programme il y a un an, j'ai réussi à le faire fonctionner correctement sur un cluster que je n'avais pas mis en place. Le problème que j'ai maintenant est que chaque fois que je l'exécute, tous les processus disent qu'ils sont de rang 0. Si j'ai 3 nœuds, au lieu d'être les nœuds 1, 2 et 3, ils sont tous le nœud 0. Si quelqu'un sait ce qui se passe, j'apprécierais certainement de l'aide. Merci.OpenMPI: Tous les nœuds s'exécutent en tant que nœud 0

+0

Peut-être pourriez-vous montrer quelles sont les commandes/scripts que vous utilisez pour configurer les processus? – Svante

Répondre

1

Votre initialisation est peut-être incorrecte ou vous avez une erreur de vérification du rang. Cela devrait être la bonne façon de le faire:

MPI_Init(&argc, &argv); 
MPI_Comm_size(MPI_COMM_WORLD, &size); 
MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
printf("I am process %d of %d.\n", rank, size); 

Mais je suppose que vous avez ce droit, alors je suis d'accord à Harleqin, montrant les commandes/scripts que vous utilisez serait utile.

3

J'ai trouvé quel était le problème. J'avais deux paquets installés qui utilisaient tous les deux la commande mpirun. Je crois que c'était à la fois openmpi et mpich packages. J'ai enlevé openmpi et cela a fonctionné.