[R-br] Dependencias no mclapply

Junior Beleti beleti.junior em gmail.com
Quinta Abril 19 12:13:26 BRT 2012


Olá a todos.

Na busca de melhorias no processamento paralelo, estou com uma dúvida
quanto a função mclapply do pacote multicore.
Benilton já me deu várias dicas de como proceder com o mesmo, mas ainda
tenho a seguinte dúvida:


   - Quanto a questão de dependências dentro das operações do mclapply, por
   exemplo, nas seguintes instruções:

      mclapply(1:100, function(i) {

      g <- mvrnorm(n=1, mat.cokri[[1]],mat.cokri[[2]])
               #1
            seq1 <- seq(1,nlinhas,by=2)
                              #2
            seq2 <- seq(2,nlinhas,by=2)
                              #3
            y1 <- g[seq1]
                                           #4
            y2 <- g[seq2]
                                           #5
            gerado <- data.frame(y1,y2)
                               #6
            compos <- agl(gerado)
                                  #7
            compos1 <- cbind(compos,compos1)
                     #8

        },mc.cores=4
        )


   - 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.

   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?

   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.

Att,

Carlos Beleti.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120419/27c60616/attachment.html>


Mais detalhes sobre a lista de discussão R-br