AGGIORNAMENTO: il cursore ora utilizza foreach
internamente, quindi questa domanda non è più pertinente. Se è possibile registrare un backend parallelo funzionante per foreach
, il cursore lo utilizzerà.
Ho il pacchetto del cursore per R, e sono interessante usare la train
funzione per validare in modo incrociato i miei modelli. Tuttavia, voglio accelerare le cose e sembra che il cursore fornisca supporto per l'elaborazione parallela. Qual è il modo migliore per accedere a questa funzione su un computer Windows? Ho il pacchetto doSMP , ma non riesco a capire come tradurre la foreach
funzione in una lapply
funzione, quindi posso passarla alla train
funzione.
Ecco un esempio di ciò che voglio fare, dalla train
documentazione: Questo è esattamente quello che voglio fare, ma usando il doSMP
pacchetto, piuttosto che il doMPI
pacchetto.
## A function to emulate lapply in parallel
mpiCalcs <- function(X, FUN, ...)
}
theDots <- list(...)
parLapply(theDots$cl, X, FUN)
{
library(snow)
cl <- makeCluster(5, "MPI")
## 50 bootstrap models distributed across 5 workers
mpiControl <- trainControl(workers = 5,
number = 50,
computeFunction = mpiCalcs,
computeArgs = list(cl = cl))
set.seed(1)
usingMPI <- train(medv ~ .,
data = BostonHousing,
"glmboost",
trControl = mpiControl)
Ecco una versione della funzione di mbq che utilizza gli stessi nomi di variabili della documentazione lapply:
felapply <- function(X, FUN, ...) {
foreach(i=X) %dopar% {
FUN(i, ...)
}
}
x <- felapply(seq(1,10), sqrt)
y <- lapply(seq(1,10), sqrt)
all.equal(x,y)