अद्यतन: कैरेट अब 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)