업데이트 : 캐럿은 이제 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)