2008-12-07 9 views
7

Ich habe ein C++ - Programm, das die OpenMPI-Bibliothek verwendet, um Nachrichten zwischen verschiedenen Prozessoren zu übergeben. Es ist ein paralleles Programm, das einen genetischen Algorithmus verwendet, um eine gute Lösung für das Problem des reisenden Verkäufers zu erhalten. Ich versuche, die MPI-Umgebung auf meinen zwei Dual-Prozessor-Computern in meinem Haus einzurichten, damit ich sie ausführen kann. Als ich das Programm vor einem Jahr zum ersten Mal erstellte, konnte ich es auf einem Cluster, das nicht von mir eingerichtet wurde, gut ausführen. Das Problem, das ich jetzt habe, ist, dass, wenn ich es ausführe, alle Prozesse sagen, dass sie den Rang 0 haben. Wenn ich 3 Knoten habe, anstatt dass sie Knoten 1, 2 und 3 sind, sind sie alle Knoten 0. Wenn jemand weiß, was vor sich geht, wäre ich dankbar für etwas Hilfe. Vielen Dank.OpenMPI: Alle Knoten laufen als Knoten 0

+0

Vielleicht könnten Sie zeigen, welche Befehle/Skripts Sie zum Einrichten der Prozesse verwenden? – Svante

Antwort

1

Vielleicht ist Ihre Initialisierung falsch oder Sie haben einen Fehler beim Überprüfen des Rangs. Dies sollte der richtige Weg, dies zu tun:

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); 

Aber ich nehme an, Sie haben richtig tat, so stimme ich zu Harleqin, zeigt die Befehle/Skripte, die Sie wäre hilfreich verwenden.

3

Ich habe herausgefunden, was das Problem war. Ich hatte zwei Pakete installiert, die beide den Befehl mpirun verwendeten. Ich glaube, es waren sowohl OpenMPI- als auch MPICH-Pakete. Ich habe openmpi entfernt und es hat funktioniert.