আপডেট: ক্যারেটটি এখন foreach
অভ্যন্তরীণভাবে ব্যবহার করে, সুতরাং এই প্রশ্নটি এখন আর প্রাসঙ্গিক নয়। আপনি যদি কোনও কাজের সমান্তরাল ব্যাকএন্ডের জন্য নিবন্ধন করতে পারেন তবে foreach
ক্যারেট এটি ব্যবহার করবে।
আমার কাছে আর এর জন্য ক্যারেট প্যাকেজ রয়েছে এবং আমি train
আমার মডেলগুলি ক্রস-বৈধ করতে ফাংশনটি ব্যবহার করতে আগ্রহী । তবে আমি জিনিসগুলিকে দ্রুত করতে চাই এবং মনে হয় ক্যারেট সমান্তরাল প্রক্রিয়াকরণের জন্য সমর্থন সরবরাহ করে। উইন্ডোজ মেশিনে এই বৈশিষ্ট্যটি অ্যাক্সেস করার সর্বোত্তম উপায় কী? আমার কাছে ডসএমপি প্যাকেজ রয়েছে, তবে কীভাবে 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)
এখানে এমবিকিউ-র ফাংশনের একটি সংস্করণ রয়েছে যা ল্যাপ্লি ডকুমেন্টেশনের মতো একই চলক নামগুলি ব্যবহার করে:
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)