R
使用 doSMP 並行化插入符號包
更新:插入符號現在
foreach
在內部使用,所以這個問題不再相關。如果您可以為 註冊一個有效的並行後端foreach
,插入符號將使用它。
我有 R 的caret包,我對使用該
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)
這是 mbq 函數的一個版本,它使用與 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)
嘗試
computeFunction=function(onWhat,what,...){foreach(i=onWhat) %do% what(i,...)},