AKTUALIZACJA: daszek używa teraz foreach
wewnętrznie, więc to pytanie nie jest już tak naprawdę istotne. Jeśli możesz zarejestrować działający backend równoległy foreach
, Caret go użyje.
Mam pakiet karetki dla R i jestem ciekawy w użyciu train
funkcji do krzyżowej weryfikacji moich modeli. Chcę jednak przyspieszyć i wydaje się, że daszek zapewnia obsługę przetwarzania równoległego. Jaki jest najlepszy sposób uzyskania dostępu do tej funkcji na komputerze z systemem Windows? Mam pakiet doSMP , ale nie wiem, jak przełożyć foreach
funkcję na lapply
funkcję, więc mogę przekazać ją do train
funkcji.
Oto przykład tego, co chcę zrobić z train
dokumentacji: To jest dokładnie to, co chcę zrobić, ale używając doSMP
pakietu, a nie doMPI
pakietu.
## 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)
Oto wersja funkcji mbq, która używa tych samych nazw zmiennych co dokumentacja 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)