У меня есть набор элементов для запуска пользовательской функцией в R. Для последовательного выполнения этих элементов требуется много времени. Затем я переключаюсь на параллельные вычисления, используя foreach()
, %dopar%
, makecluster()
и registerdoparallel()
. Мне интересно, как эти элементы распределяются по кластерам. Скажем, у меня есть 100 элементов и зарегистрировано 5 кластеров, элементы 1 ~ 20 назначены кластеру 1 и так далее, или они назначаются случайным образом. Спасибо
как элементы назначаются кластерам в foreach () при выполнении параллельных вычислений в R
Ответы (1)
Первым готово, первым подано:
library(doParallel)
registerDoParallel(cl <- makeCluster(3))
foreach(i = 1:20, .combine = 'c') %dopar% {
Sys.getpid()
}
[1] 13004 5924 6600 13004 5924 13004 6600 5924 13004 5924 13004 5924 13004
[14] 5924 6600 13004 5924 6600 13004 5924
stopCluster(cl)
person
F. Privé
schedule
28.08.2020
parallel::splitIndices
WITHOUT (), вы увидите, что этот метод разделяет их от начала до конца, если имеется более определенного количества задач. Итак, для 4 кластеров вы выполняете 1: 5, 6:10, 11:15, 16:20 .... за исключением того, что, похоже, минимум 1000, поэтому вы выполняете все действия в одном кластере. - person Adam Sampson   schedule 27.08.2020