У меня есть код R, который включает несколько рабочих foreach для параллельного выполнения некоторых задач. Я использую foreach и doMC для этой цели. Я хочу, чтобы каждый из рабочих foreach набирал новых рабочих и распространял им некоторые части своего кода, который можно распараллелить.
Текущий код выглядит так:
require(doMC)
require(foreach)
registerDoMC(cores = 8)
foreach (i = (1:8)) %dopar% {
<<some code here>>
for (j in c(1:4)) {
<<some other code here>>
}
}
Я ищу идеальный код, который будет выглядеть так:
require(doMC)
require(foreach)
registerDoMC(cores = 8)
foreach (i = (1:8)) %dopar% {
<<some code here>>
foreach (j = (1:4)) %dopar% {
<<some other code here>>
}
}
Я видел пример мультипарадигмального параллелизма с использованием doSNOW и doMC https://www.rmetrics.org/files/Meielisalp2009/Presentations/Lewis.pdf#page=17. Однако я не знаю, делает ли он то, что я хочу, или нет.
Кроме того, кажется, что вложенный foreach неприменим, поскольку для этого требуется объединить два цикла (см. здесь), хотя в моем случае это нежелательно; второй цикл помогает первому только для части кода. Пожалуйста, поправьте меня, если я ошибаюсь.
Спасибо.
foreach
выражения: cran.r-project.org/web/packages/foreach/vignettes/nested.pdf . Однако я не знаю о найме большего количества рабочих внутри циклов. - person ialm   schedule 21.06.2013