2013-07-09 30 views
7

Ho un Windows HPC Server in esecuzione con alcuni nodi nel back-end. Mi piacerebbe eseguire Parallel R usando più nodi dal back-end. Penso che Parallel R potrebbe usare SNOW su Windows, ma non troppo sicuro su di esso. La mia domanda è, devo installare R anche sui nodi back-end? Dire che voglio usare due nodi, 32 core per nodo:Parallel R su un cluster di Windows

cl <- makeCluster(c(rep("COMP01",32),rep("COMP02",32)),type="SOCK") 

In questo momento, si blocca solo.

Cos'altro devo fare? I nodi back-end necessitano di una sorta di sshd in esecuzione per poter comunicare tra loro?

+1

Sì, è necessario installare R su ciascun nodo. –

+1

@HongOoi e devo specificare la posizione di R o semplicemente quella predefinita? – Manolete

risposta

7

La configurazione di snow su un cluster di Windows è piuttosto difficile. Ciascuna macchina deve avere R e snow installate, ma questa è la parte facile. Per avviare un cluster SOCK, è necessario un demone sshd in esecuzione su ciascuna delle macchine worker, ma è comunque possibile incontrare problemi, quindi non lo consiglierei a meno che tu non sia bravo nel debug e nell'amministrazione del sistema Windows.

Penso che l'opzione migliore su un cluster di Windows sia l'utilizzo di MPI. Non ho alcuna esperienza con MPI su Windows, ma ho sentito parlare di persone che hanno avuto successo con le distribuzioni MPICH e DeinoMPI MPI per Windows. Dopo aver installato MPI nel cluster, è necessario installare il pacchetto Rmpi dal sorgente su ciascuna delle macchine worker. Dovresti quindi creare l'oggetto cluster usando la funzione makeMPIcluster. È un sacco di lavoro, ma penso che sia più probabile che alla fine lavori piuttosto che provare ad usare un cluster SOCK a causa dei problemi con ssh/sshd su Windows.

Se si desidera eseguire un processo parallelo una o due volte su un cluster di Windows, è possibile provare a utilizzare la modalità manuale. Esso consente di creare un cluster CALZINO senza ssh:

workers <- c(rep("COMP01",32), rep("COMP02",32)) 
cl <- makeSOCKluster(workers, manual=TRUE) 

La funzione makeSOCKcluster richiederà di iniziare ogni uno degli operai, che visualizza il comando da utilizzare per ogni. È necessario aprire manualmente una finestra di comando sul computer specificato ed eseguire il comando specificato. Può essere estremamente noioso, in particolare con molti lavoratori, ma almeno non è complicato o complicato. Può anche essere molto utile per il debug in combinazione con l'opzione outfile=''.

+0

@_Steve Weston: Grazie per il tuo aiuto Steve. Quando dici "modalità manuale" per eseguire un lavoro parallelo, cosa intendi? – Manolete

+0

@Manolete Ho aggiunto ulteriori informazioni sulla modalità manuale per rispondere alla tua domanda. –

+0

+1 i primi due paragrafi sono estremamente utili. Perché non ci sono guide/documenti che spieghino questo? – TMS

Problemi correlati