Olá a todos.<div><br></div><div>Na busca de melhorias no processamento paralelo, estou com uma dúvida quanto a função mclapply do pacote multicore.</div><div>Benilton já me deu várias dicas de como proceder com o mesmo, mas ainda tenho a seguinte dúvida:</div>
<div><br></div><div><ul><li>Quanto a questão de dependências dentro das operações do mclapply, por exemplo, nas seguintes instruções:<br> <br> mclapply(1:100, function(i) {<br><br> <span class="Apple-tab-span" style="white-space:pre"> </span> g <- mvrnorm(n=1, mat.cokri[[1]],mat.cokri[[2]]) #1<br>
seq1 <- seq(1,nlinhas,by=2) #2<br> seq2 <- seq(2,nlinhas,by=2) #3<br> y1 <- g[seq1] #4<br>
y2 <- g[seq2] #5<br> gerado <- data.frame(y1,y2) #6<br>
compos <- agl(gerado) #7<br> compos1 <- cbind(compos,compos1) #8<br><br> },mc.cores=4<br>
)</li></ul><ul><li>Em minha análise, cada um dos 4 núcleos vai executar todas as instruções dentro da função, ou seja, cada núcleo vai executar as 8 instruções dentro da função. Mas a dúvida surge quanto as dependências, visto que em uma execução sequencial, todas as instruções seriam executadas sequencialmente, e a próxima iteração só iniciaria após o resultado de "compos1" ter sido atribuído.<br>
<br>E quanto ao processo paralelo, seria respeitado tal sequencia de instruções, ou seja, a segunda iteração inicia somente após "compos1" ter sido atribuído na primeira iteração? Como o mclapply possui tal controle?<br>
<br>Estou ciente que esta questão pode ser mais da implementação do próprio pacote, mas se alguém puder me esclarecer ficaria muito grato.</li></ul></div><div>Att,</div><div><br></div><div>Carlos Beleti.</div>