Existe pacote multicore no
Windows?
Cada um dos nucleos executara' as instrucoes 1-8 do
modo que elas
estao apresentadas dentro da funcao.
Cada nucleo
executara' essa sequencia independentemente do que esteja
acontecendo nos
outros nucleos. Portanto, se o nucleo B terminar
primeiro que o nucleo A,
entao o nucleo B vai executar o que estiver
na fila para ele e nao tera' nada
a ver com o que esta' acontecendo no
nucleo A.
Com mclapply() vc trata
apenas de problemas que sejam
"embarrassingly
parallel"...
b
2012/4/19 Junior Beleti
<beleti.junior@gmail.com>:
> 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.
>.