Проблемы параллельного программирования в R

#r #foreach #rparallel #r-future

Вопрос:

Я пытаюсь параллельное программирование в R foreach с использованием future.apply и.

Ниже приведен пример кода.

 # libraries library(doFuture) library(future.apply) library(foreach)   registerDoFuture() plan(cluster, workers = 4)   # function mean_rnorm lt;- function(n, mean, sd) {  # numbers   num lt;- rnorm(n = n, mean = mean, sd = sd)    # mean  mean(num) }   # 1. calculate means in parallel using 'foreach' res lt;- foreach(n = seq(10, 10000, 10)) %dopar%   mean_rnorm(n, mean = 2, sd = 3)   # 2. calculate means in parallel using 'future.apply' res lt;- future_lapply(n = seq(10, 10000, 10),   FUN = mean_rnorm, mean = 2, sd = 3)   

Вопрос 1. — Поскольку количество задач велико и каждая задача генерации случайных чисел и вычисления среднего значения выполняется очень быстро. Поэтому, чтобы свести к минимуму накладные расходы на связь между мастером и работником, я хочу дать работникам несколько задач одновременно и позволить им возвращать результаты вместе.

а) foreach работает, но как я могу разделить задачу на 4 части для foreach ?

б) Почему в future_lapply части кода есть ошибка и как можно разделить задачу на 4 части ? (Ошибка в is.vector(X) : аргумент «X» отсутствует, по умолчанию отсутствует)

…………………………………….

Вопрос 2. — Код ниже — я варьировал оба n и mean . foreach работает, но future_lapply не работает.

 # 1. calculate means in parallel using 'foreach' res lt;- foreach(n = seq(10, 10000, 10), mean = seq(10, 10000, 10)) %dopar%   mean_rnorm(n, sd = 3)   # 2. calculate means in parallel using 'future.apply' res lt;- future_lapply(n = seq(10, 10000, 10), mean = seq(10, 10000, 10),  FUN = mean_rnorm, sd = 3)   

Комментарии:

1. Для Q2 вы используете функцию с несколькими аргументами, поэтому я думаю, что вместо этого вам следует использовать future_Map(mean_rnorm, n = ..., mean = ..., sd = 3) .