
para vc entender o que o mclapply() faz, eh melhor pensar num laco via for() por exemplo, suponha que vc tenha uma funcao como abaixo e vc a executa serialmente via for() f <- function(x) Sys.sleep(5) t0 <- system.time(for (i in 1:4) f(i)) A funcao vai demorar 20s e mais um pouquinho... No meu caso, veja t0 abaixo:
t0 user system elapsed 0.001 0.000 20.001
Note o q vc esta' fazendo: chamando a funcao com argumentos diferentes repetidas vezes. A ideia do mclapply e' fazer cada uma dessas chamadas num nucleo diferente.. e isso e' alcancado via: t1 <- system.time(mclapply(1:4, f))
t1 user system elapsed 0.004 0.011 5.016
Simples assim... No meu caso, eu passei 4 argumentos (1:4)... Como eu tenho 16 nucleos, o R usa apenas 4 (dur!)... Se tivesse 2 nucleos, cada um dos nucleos executaria a funcao com dois dos argumentos. Assim, o argumento mc.cores controle apenas o numero *maximo* de nucleos a serem usados. Dito isso, no seu caso, ao passar 1:1, isso tem comprimento 1... e o mclapply entende (como deve ser) que vc quer chamar a funcao apenas 1 vez... e, obviamente, aloca apenas 1 nucleo. b 2012/2/24 Junior Beleti <beleti.junior@gmail.com>:
Olá Paulo, o problemas está realmente na chamada a função mvrnorm, pois essa invoca o código objeto eigen.o (função eigen.f).
Meu objetivo é dividir o processamento e ao invés de realizar uma chamada, fazer diversas chamadas em paralelo por meio da função mclapply.
O problema é que mesmo com a mclapply, quando o código objeto é carregado na memória, apenas uma instancia de tal código pode ser processada por vez.
Estaria correta essa minha ultima colocação Benilton?
Sobre a chamada mclapply(1:1, function(i) { ... }, mc.cores=4)
o elemento (1:1) diz respeito ao número de voltas que a função vai executar e não a quantidade de cores que estou disponibilizando, estou certo?
Entendi sua colocação e vou efetuar testes. Assim que tiver respostas lhes comunico.
Obrigado pelas dicas e pela atenção.
Carlos Beleti.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.