Параллельные вычисления в R, суммирование переменных
Я совершенно новичок в параллельных вычислениях в R, и я хотел бы (очень упрощенная версия исходной задачи) добавить новое значение в X, Y и Z следующим образом:
library(foreach)
library(doParallel)
X <- 0
Y <- 0
Z <- 0
cores <- detectCores()
cl <- makeCluster(cores[1] - 1) #not to overload your computer
registerDoParallel(cl)
A <- foreach(i = 1:3, .combine = data.frame) %dopar% {
X = X + i
Y = Y + i + 2
Z = Z + i + 3
}
stopCluster(cl)
Я надеялся получить A = [6 12 15]
(6=1+2+3; 12=(1+2)+(2+2)+(3+2); 15=(1+3)+(2+3)+(3+3)), но к сожалению я получаю этот результат A = [4 5 6]
,
Я попытался решить эту проблему с помощью документации foreach, и я думаю, что должен сам сделать функцию для.combine, чтобы получить желаемый результат, но я не понимаю, как...
Кто-нибудь может мне помочь?
Заранее спасибо!
1 ответ
Просто нашел это сам! Следующий код возвращает желаемый результат
библиотека (Еогеасп)
библиотека (doParallel)
X <- 0
Y = 0
Z = 0
Сердечники = detectCores ()
cl <- makeCluster (cores [1] -1) # не перегружать компьютер
registerDoParallel (сл)
A = foreach (i = 1: 3,.combine = '+')% допар% {
X = X + I
Y = Y + i + 2
Z = Z + i + 3
Возвращение (с (Х, Y, Z))
}
stopCluster (сл)