Sto vivendo la lentezza durante la creazione di cluster utilizzando il pacchetto parallel
.Che cosa influenza il tempo per creare un cluster usando il pacchetto parallelo?
Ecco una funzione che crea e arresta un cluster PSOCK con i nodi n
.
library(parallel)
library(microbenchmark)
f <- function(n)
{
cl <- makeCluster(n)
on.exit(stopCluster(cl))
}
microbenchmark(f(2), f(4), times = 10)
## Unit: seconds
## expr min lq median uq max neval
## f(2) 4.095315 4.103224 4.206586 5.080307 5.991463 10
## f(4) 8.150088 8.179489 8.391088 8.822470 9.226745 10
La mia macchina (un tempo ragionevolmente moderna stazione di lavoro a 4 core in esecuzione Win 7 Pro) sta prendendo circa 4 secondi per creare un cluster a due nodi e 8 secondi per creare un cluster a quattro nodi. Questo mi sembrava troppo lento, quindi ho provato la stessa profilatura sulla macchina identica di un collega, e ci sono voluti uno/due secondi rispettivamente per le due prove.
Questo suggerimento potrebbe avere qualche configurazione di configurazione dispari sulla mia macchina, o che ci sia qualche altro problema. Ho letto le pagine di aiuto ?makeCluster
e socketConnection
, ma non ho visto nulla relativo al miglioramento delle prestazioni.
Ho avuto un aspetto nel Task Manager di Windows mentre il codice era in esecuzione: non c'era alcuna evidente interferenza con l'anti-virus o altro software, solo un processo Rscript in esecuzione a ~ 17% (meno di un core).
Non so dove cercare la fonte del problema. Esistono cause note di lentezza con la creazione del cluster PSOCK in Windows?
È 8 secondi per creare un cluster a 4 nodi effettivamente lento (per gli standard del 2014) o le mie aspettative sono troppo alte?
8 secondi è piuttosto lento. Ci vuole circa 1 secondo sulla mia workstation win7 di 3 anni. – Roland
Prende 11 secondi sul mio nuovo Win8 PC. – JT85
1.6 e 3.2 secondi sul mio i7 di 3 anni con W7. –