업데이트 : 캐럿은 이제 foreach내부적으로 사용 되므로이 질문은 더 이상 관련이 없습니다. 에 대한 작업 병렬 백엔드를 등록 할 수 있으면 foreach캐럿이이를 사용합니다.
나는이 캐럿 R에 대한 패키지를, 그리고 내가 사용하는 흥미로운이야 train내 모델을 교차 검증하는 기능을. 그러나 속도를 높이고 싶지만 캐럿이 병렬 처리를 지원하는 것으로 보입니다. Windows 시스템에서이 기능에 액세스하는 가장 좋은 방법은 무엇입니까? 나는이 doSMP의 패키지를,하지만 난 변환하는 방법을 알아낼 수 없습니다 foreach에 기능을 lapply나는에 전달할 수 있도록 기능이 train작동합니다.
다음은 train문서 에서 내가하고 싶은 일의 예입니다 . 이것은 내가하고 싶은 것이지만 doSMP패키지가 아닌 패키지를 사용합니다 doMPI.
## 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)
다음은 lapply 문서와 동일한 변수 이름을 사용하는 mbq 함수 버전입니다.
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)