2016-02-29 26 views
8

Di solito quando uso mpirun, posso "sovraccaricarlo", usando più processori di quanti ce ne siano sul mio computer. Ad esempio, sul mio mac quattro core, posso eseguire mpirun -np 29 python -c "print 'hey'" senza problemi. Sono su un'altra macchina ora, che sta gettando il seguente errore:mpirun - non ci sono abbastanza slot disponibili

$ 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. 
-------------------------------------------------------------------------- 

Perché non è "overclocking" mpirun lavora qui? C'è un modo per superare questo messaggio di errore ed eseguire con successo più processori di quelli disponibili?

+0

Probabilmente si intende l'oversubscribe, piuttosto che sovraccaricarlo o overclockarlo. BTW, quale implementazione MPI usi? – Harald

+0

@Harald Ho ricevuto questa domanda su un paio di domande relative a mpi, e la risposta è che semplicemente non lo so. È possibile che un non amministratore trovi queste informazioni? – kilojoules

+0

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

risposta

7

In base a https://www.open-mpi.org/faq/?category=running#oversubscribing è possibile sottoscrivere un abbonamento in eccesso tramite un file host. Prima di procedere, fai attenzione che in questo modo puoi seriamente degradare le prestazioni del nodo. Inoltre, se il sistema utilizzato per eseguire l'applicazione utilizza un sistema di code, questo potrebbe non essere valido.

Innanzitutto creare una HostFile (chiamato HostFile) contenente

localhost slots=25 

Il semplicemente eseguire l'applicazione come

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

Fresco. Sembra che il mio sistema di coda non consenta l'oversubscribing 'Non ci sono abbastanza slot disponibili nel sistema per soddisfare i 100 slot richiesti dall'applicazione' – kilojoules

5

Apparentemente oversubscribing può essere raggiunto utilizzando il "--oversubscribe" opzione con mpirun - ha fatto il trucco per me con coppia di torsione/maui

+0

Questo sembra molto più bello della risposta accettata. Si noti che il flag '--oversubscribe' è una funzione di OpenMPI 3.x. Questo flag non esiste in OpenMPI 2.x, ma qui la oversubscription è consentita per impostazione predefinita. –

+0

Bene ... Openmpi 3.0 non esisteva quando OP sollevava la domanda. È bello vedere che openmpi ha semplificato la sottoscrizione in eccesso. – Harald