CẬP NHẬT: caret hiện sử dụng foreachnội bộ, vì vậy câu hỏi này không còn thực sự phù hợp. Nếu bạn có thể đăng ký một phụ trợ song song làm việc cho foreach, caret sẽ sử dụng nó.
Tôi có gói caret cho R và tôi rất thú vị khi sử dụng trainchức năng để xác thực chéo các mô hình của mình. Tuy nhiên, tôi muốn tăng tốc mọi thứ và dường như caret cung cấp hỗ trợ cho xử lý song song. Cách tốt nhất để truy cập tính năng này trên máy Windows là gì? Tôi có gói doSMP , nhưng tôi không thể tìm ra cách dịch foreachhàm thành lapplyhàm, vì vậy tôi có thể chuyển nó sang trainhàm.
Dưới đây là một ví dụ về những gì tôi muốn làm, từ traintài liệu: Đây chính xác là những gì tôi muốn làm, nhưng sử dụng doSMPgói, thay vì doMPIgói.
## 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)
Đây là phiên bản của hàm mbq sử dụng cùng tên biến như tài liệu 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)