
Bem, dado que eu uso Ubuntu e não sou expert, sou apenas usuário e ainda por cima estou com o RStudio, as coisas podem estar meio enroladas mesmo... abraços Paulo 2011/7/6 Gustavo Carvalho <gustavo.bio@gmail.com>
Engraçado que aqui em casa os tempos estão dentro do esperado:
system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=1)) user system elapsed 24.698 0.080 24.864 system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=2)) user system elapsed 0.004 0.033 12.847 system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=3)) user system elapsed 41.941 0.783 9.085 system.time(mclapply(1:32, function(x) sum(rnorm(1e7)), mc.cores=4)) user system elapsed 27.741 0.680 6.650
2011/7/6 Paulo Nogueira <paulons@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@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@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@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@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@gmail.com> > > https://listas.inf.ufpr.br/pipermail/r-br/2011-June/001618.html > > 2011/7/6 Gustavo Carvalho <gustavo.bio@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@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@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@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@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@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@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@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@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@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@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@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.