2016-02-29 12 views
8

Zwykle, gdy używam mpiruna, mogę go "przeciążyć", używając większej liczby procesorów niż na komputerze. Na przykład na moim czterordzeniowym macu mogę bez problemu uruchomić program mpirun -np 29 python -c "print 'hey'". Jestem teraz na innym komputerze, który rzuca się następujący błąd:mpirun - niewystarczająca liczba dostępnych gniazd

$ mpirun -np 25 python -c "print 'hey'" 
-------------------------------------------------------------------------- 
There are not enough slots available in the system to satisfy the 25 slots 
that were requested by the application: 
    python 

Either request fewer slots for your application, or make more slots available 
for use. 
-------------------------------------------------------------------------- 

Dlaczego nie działa tutaj „podkręcania” mpirun? Czy istnieje sposób, w jaki mogę przezwyciężyć ten komunikat o błędzie i pomyślnie uruchomić więcej procesorów niż jest dostępnych?

+0

Prawdopodobnie oznacza to oversubscribe, zamiast przeciążania lub podkręcania go. BTW, jakiej implementacji MPI używasz? – Harald

+0

@Harald Otrzymałem to pytanie na kilka pytań związanych z mpi, a odpowiedź brzmi, że po prostu nie wiem. Czy to nie jest administrator, aby znaleźć te informacje? – kilojoules

+0

'mpirun --version' daje' (Open MPI) 1.7.3' – kilojoules

Odpowiedz

7

Zgodnie z https://www.open-mpi.org/faq/?category=running#oversubscribing można przesłać swój węzeł za pomocą pliku hosta. Przed kontynuowaniem należy uważać, aby w ten sposób poważnie obniżyć wydajność węzła. Ponadto, jeśli system używany do uruchamiania aplikacji korzysta z systemu kolejkowania, może to nie być poprawne.

Najpierw utwórz HOSTFILE (nazwany HOSTFILE) zawierający

localhost slots=25 

Prosto uruchomić aplikację jak

mpirun --hostfile hostfile -np 25 python -c "print 'hey'" 
+0

Cool. Wygląda na to, że mój system kolejek nie pozwala na nadsubskrybowanie 'Nie ma wystarczającej ilości slotów dostępnych w systemie, aby zaspokoić 100 slotów , które były wymagane przez aplikację' – kilojoules

5

Widocznie oversubscribing może zostać osiągnięty za pomocą "--oversubscribe" opcję z mpirun - zrobił sztuczka dla mnie z momentem obrotowym/maui

+0

To wydaje się dużo ładniejsze niż zaakceptowana odpowiedź. Zauważ, że flaga '--oversubscribe' jest cechą OpenMPI 3.x. Ta flaga nie istnieje w OpenMPI 2.x, ale tutaj nadsubskrypcja jest domyślnie dozwolona. –

+0

No cóż ... Openmpi 3.0 nie istniało, gdy PO zadał pytanie. Dobrze, że openmpi ułatwiło nadsubskrypcję. – Harald