[R-br] Criação de função fortran em pacote (base)

FHRB Toledo fernandohtoledo em gmail.com
Sexta Fevereiro 24 15:44:07 BRST 2012


Muito ilustrativo Benilton...  :)

abraço,
FH

2012/2/24 Benilton Carvalho <beniltoncarvalho em gmail.com>:
> 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 em 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 em 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.
> _______________________________________________
> R-br mailing list
> R-br em 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.


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