अद्यतन: कैरेट अब foreach
आंतरिक रूप से उपयोग करता है , इसलिए यह प्रश्न अब वास्तव में प्रासंगिक नहीं है। यदि आप इसके लिए काम करने वाले समानांतर बैकएंड को पंजीकृत कर सकते हैं foreach
, तो कैरट इसका उपयोग करेगा।
मेरे पास आर के लिए कैरेट पैकेज है, और मैं train
अपने मॉडलों को पार करने के लिए फ़ंक्शन का उपयोग करने में दिलचस्प हूं। हालांकि, मैं चीजों को गति देना चाहता हूं, और ऐसा लगता है कि कैरेट समानांतर प्रसंस्करण के लिए समर्थन प्रदान करता है। विंडोज मशीन पर इस सुविधा का उपयोग करने का सबसे अच्छा तरीका क्या है? मेरे पास 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)