Mam kod R, który obejmuje kilku pracowników foreach do wykonywania niektórych zadań równolegle. Używam foreach i doMC w tym celu. Chcę, aby każdy z pracowników foreach rekrutował kilku nowych pracowników i rozpowszechniał niektóre części ich kodu, które można zrównoleglić.Umożliwiaj pracownikom forex rejestrowanie i dystrybucję zadań podrzędnych innym pracownikom.
Obecny kod wygląda następująco:
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>>
}
}
szukam idealnej kodu, który wyglądałby następująco:
require(doMC)
require(foreach)
registerDoMC(cores = 8)
foreach (i = (1:8)) %dopar% {
<<some code here>>
foreach (j = (1:4)) %dopar% {
<<some other code here>>
}
}
Widziałem przykład multi-paradygmatu równoległości korzystając doSNOW i doMC here (https://www.rmetrics.org/files/Meielisalp2009/Presentations/Lewis.pdf#page=17) . Jednak nie wiem, czy robi to, co chcę, czy nie.
Również wydaje się, że Nested foreach nie ma zastosowania, ponieważ wymaga połączenia dwóch pętli (see here), podczas gdy w moim przypadku nie jest to preferowane; druga pętla pomaga tylko pierwszej części fragmentu kodu. Proszę, popraw mnie jeśli się mylę.
Dzięki.
Może nie dokładnie to, co chcesz, ale możesz mieć zagnieżdżone wyrażenia "foreach": http://cran.r-project.org/web/packages/foreach/vignettes/nested.pdf. Nie wiem jednak o rekrutacji większej liczby robotników w pętlach. – ialm
Dzięki. Jednak wydaje się, że zagnieżdżone foreach nie dotyczy mojego przypadku, ponieważ wymaga scalenia dwóch zagnieżdżonych pętli, podczas gdy potrzebuję wewnętrznej pętli, która jest wywoływana tylko dla części kodu. Zaktualizuję pytanie, aby to odzwierciedlić. – imriss