[R-br] R utilizando apenas 1 processador para rodar

Benilton Carvalho beniltoncarvalho em gmail.com
Quarta Julho 6 18:04:37 BRT 2011


O aviso que vc ve e' parte dos problemas q falei em usar o multicore
com RStudio.... (veja alguma das minhas msgs anteriores nesse thread)

O RStudio eh algo legal pro usuario comum... mas, `a medida que vc usa
recursos mais avancados, ele pode vir com problemas 'inexplicaveis'.

Sobre usar f(x, y) ao inves de f(x), vc precisa escrever um wrapper
para f(x, y) e usar como funcao de um indice...

f = function(x, y){
  sum(rnorm(x, 2)) + sum(rnorm(y, 4))
}

entao vc cria um wrapper conforme segue:

g = function(i, x, y){
   f(x[i], y[i])
}

e faz algo como:

library(multicore)
x = sample(100, 10)
y = sample(100, 10)
res = mclapply(1:length(x), g, x=x, y=y)

sobre os tempos de execucao.... bom, coisas estranhas podem acontecer
sob RStudio....

b

2011/7/6 Paulo Nogueira <paulons em gmail.com>:
> Benilton,
> já estou conseguindo utilizar paralelização.
> Fiz um dos testes que está no help da função mclappy e percebí que a partir
> de 2 núcleos não faz mais tanta diferença, nesse caso.
>
> system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=1))
> system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=2))
> system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=3))
>
> system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=4))
>    user  system elapsed
>  51.459   1.260  52.857
> select: Chamada de sistema interrompida
>
>    user  system elapsed
>  26.234   0.720  27.590
> select: Chamada de sistema interrompida
> select: Chamada de sistema interrompida
>
>    user  system elapsed
>  42.355   1.120  25.719
> select: Chamada de sistema interrompida
> select: Chamada de sistema interrompida
>
> select: Chamada de sistema interrompida
>    user  system elapsed
>  59.735   1.460  22.140
>
> O que significa esse aviso?
>
> select: Chamada de sistema interrompida
>
> Outra coisa é que não consegui utilizar mclapply com uma função de mais de
> um argumento, tipo f(x,y), apenas com funções f(x).
> Isso é devido a ela ser uma versão da lapply e portanto o que eu quero é
> impossível? Nesse caso, existiria uma versão da mapply para processamento
> paralelo?
>
> abraços
> Paulo Nogueira Starzynski
>
>
>
> 2011/7/6 Benilton Carvalho <beniltoncarvalho em gmail.com>
>>
>> e se vc estiver usando o multicore sozinho
>>
>> options(cores=2)
>>
>> ou
>>
>> mclapply(.... , mc.cores=2)
>>
>> se vc estiver usando o pacote snow, vc passa as configuracoes
>> apropriadas para o makeCluster().
>>
>> b
>>
>> 2011/7/6 Gustavo Carvalho <gustavo.bio em gmail.com>:
>> > Sim. Usando os pacotes foreach, doMC e multicore você pode escolher
>> > quantos núcleos quer usar na hora de registrar:
>> >
>> > registerDoMC(cores = 2)
>> >
>> > 2011/7/6 jonas bodini alonso <jonasbal em ig.com.br>:
>> >>    Queria aproveitar o assunto pra postar mais uma dúvida:
>> >>    Por acaso essas funções citadas anteriormente permitem escolher o
>> >> número
>> >> de núcleos a serem usados?
>> >>    Por exemplo, eu quero usar somente 2 em vez dos 4 existentes.
>> >>    Jonas
>> >>
>> >> Em 6 de julho de 2011 13:02, Fernando Henrique Toledo
>> >> <fernandohtoledo em gmail.com> escreveu:
>> >>>
>> >>> Queria deixar minha impressão:
>> >>>
>> >>> Também achava que paralelização "deveira" ser um pensamento
>> >>> imediato...
>> >>> Mas lendo e consultando outros colegas percebi que essa abordagem vai
>> >>> mostrar sua real vantagem em problemas muito complexos e que antes
>> >>> disso tem
>> >>> muitas outras coisas mais imediatas a se fazer para melhorar o
>> >>> desempenho de
>> >>> alguma tarefa! Sem falar que para paralelizar é preciso um
>> >>> conhecimento
>> >>> muito mais profundo do processo da tarefa!
>> >>>
>> >>> abraços,
>> >>> FH
>> >>>
>> >>> 2011/7/6 Gustavo Carvalho <gustavo.bio em gmail.com>
>> >>>>
>> >>>> https://listas.inf.ufpr.br/pipermail/r-br/2011-June/001618.html
>> >>>>
>> >>>> 2011/7/6 Gustavo Carvalho <gustavo.bio em gmail.com>:
>> >>>> > Assim como paralelizar nem sempre é vantajoso uma vez que a
>> >>>> > comunicação entre os processos pode ser demorada, nem sempre usar
>> >>>> > for
>> >>>> > e while é lento. Essas funções da família *apply tem loops em suas
>> >>>> > definições. Tem um post do Benilton em que ele mostra as situações
>> >>>> > mais comuns e compara o tempo de execução delas. Dê uma procurada.
>> >>>> >
>> >>>> > 2011/7/6 Paulo Nogueira <paulons em gmail.com>:
>> >>>> >> Obrigado pelas respostas de todos. Essa lista é de um nível
>> >>>> >> incrível!
>> >>>> >>
>> >>>> >> Junior Beleti,
>> >>>> >> não é que eu realmente precise de alto desempenho, mas como tenho
>> >>>> >> disponíveis 4 processadores pensei: "porque não usar todos eles?"
>> >>>> >>
>> >>>> >> Parte da resposta para a minha pergunta eu obtive indo atrás do
>> >>>> >> material
>> >>>> >> recomendado pelo pessoal nas mensagens anteriores: não é muito
>> >>>> >> simples
>> >>>> >> esse
>> >>>> >> negócio de paralelização no R. Ao menos eu não achei simples.
>> >>>> >> Pensava
>> >>>> >> que
>> >>>> >> fosse algo mais automático, como abilitar um opção e pronto.
>> >>>> >>
>> >>>> >> Por outro lado, me deparei com material sobre vetorização e alguns
>> >>>> >> testes de
>> >>>> >> performance mostrando o quanto é vantajoso substituir loopings por
>> >>>> >> outras
>> >>>> >> coisas no R. Como eu aprendi a programar em C tenho essa mania de
>> >>>> >> usar
>> >>>> >> for e
>> >>>> >> while para resolver tudo e no R isso não é a melhor solução.
>> >>>> >> Estou indo nesse caminho também.
>> >>>> >>
>> >>>> >> abraços
>> >>>> >> Paulo Nogueira Starzynski
>> >>>> >>
>> >>>> >> 2011/7/6 Junior Beleti <beleti.junior em gmail.com>
>> >>>> >>>
>> >>>> >>> Olá Paulo Nogueira,
>> >>>> >>>
>> >>>> >>> como já foi mencionado, o pacote multicore possui funções de
>> >>>> >>> "alto
>> >>>> >>> nivel" para utilizar o paralelismo.
>> >>>> >>>
>> >>>> >>> A sua aplicação necessita de alto desempenho?
>> >>>> >>>
>> >>>> >>> É que estou trabalhando com processamento paralelo e talvez possa
>> >>>> >>> ajudar.
>> >>>> >>>
>> >>>> >>> Abraço
>> >>>> >>>
>> >>>> >>> --
>> >>>> >>> Carlos Roberto Beleti Junior
>> >>>> >>> Mestrado em Ciência da Computação
>> >>>> >>> Departamento de Informática
>> >>>> >>> Universidade Estadual de Maringá
>> >>>> >>> _______________________________________________
>> >>>> >>> 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.
>> >>>> >>
>> >>>> >
>> >>>> _______________________________________________
>> >>>> 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.
>> >>
>> >>
>> >> _______________________________________________
>> >> 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.
>> >
>>
>>
>>
>> --
>> Successful people ask better questions, and as a result, they get
>> better answers. (Tony Robbins)
>> _______________________________________________
>> 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.
>



-- 
Successful people ask better questions, and as a result, they get
better answers. (Tony Robbins)


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