2008-12-07 9 views
7

Mam program C++, który używa biblioteki openMPI do przekazywania wiadomości między różnymi procesorami. Jest to równoległy program, który wykorzystuje algorytm genetyczny, aby uzyskać dobre rozwiązanie problemu związanego z podróżującym sprzedawcą. Próbuję skonfigurować środowisko MPI na dwóch komputerach z dwoma procesorami w moim domu, aby móc go uruchomić. Kiedy pierwszy raz stworzyłem ten program rok temu, udało mi się go uruchomić dobrze na klastrze, który nie został skonfigurowany przeze mnie. Problem, który mam teraz, polega na tym, że za każdym razem, gdy go uruchamiam, wszystkie procesy mówią, że mają one rangę 0. Jeśli mam 3 węzły, zamiast nich węzły 1, 2 i 3, wszystkie są węzłem 0. Jeśli ktoś wie, co się dzieje, z pewnością doceniam jakąś pomoc. Dzięki.OpenMPI: Wszystkie węzły działają jako węzły 0

+0

Być może możesz pokazać, jakie polecenia/skrypty są używane do konfigurowania procesów? – Svante

Odpowiedz

1

Być może inicjalizacja jest błędna lub masz błąd podczas sprawdzania pozycji. To powinno być właściwym sposobem, aby to zrobić:

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

Ale zakładam, że zrobił to prawo, tak zgadzam się Harleqin, pokazując poleceń/skrypty użyć byłoby pomocne.

3

Dowiedziałem się, na czym polegał problem. Miałem zainstalowane dwa pakiety, które używały polecenia mpirun. Uważam, że był to pakiet zarówno openmpi, jak i mpich. Usunąłem openmpi i zadziałało.

Powiązane problemy