
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@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.
-- Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)