sobre a utilização de processamento em vários núcleos

Olá, Rodo o R 64-bit no Ubuntu 10.04 em uma máquina com processador Core i7 e 8 Gb de RAM. Nesta semana começei a fazer uma análise de cluster, utilizando basicamente o pacote vegan, sobre uma matriz grande. O cálculo das ligações (hclust) levou três hora e meia para ser efetuado (!!!). Vi que apenas um núcleo do processador estava sendo utilizado. Começei então a procurar alternativas que permitissem o aceleramento dos cálculos e a utilização dos outros núcleos, que estão sub-utilizados. Li sobre o pacote multicore e outros, inclusive em mensagens nesta lista. Muitas coisas não ficaram claras para mim e, no final, não compreendi como proceder sua utilização no meu caso (ou mesmo se é possível). É possivel rodar uma análise de cluster fazendo utilização dos diversos núcleos? Agradeço qualquer orientação e/ou indicação de documentação. Abraços, Antônio -- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca São Paulo, Brasil

em teoria, vc precisa pegar a funcao de interesse e reescreve-la usando os pacotes para os quais vc viu referencias... alternativamente, use o que alguem ja' fez pra vc: install.packages('Rclusterpp') library(Rclusterpp) blah = USArrests[rep(1:nrow(USArrests), 1000),] res = Rclusterpp.hclust(blah, method="average", distance="euclidean") b 2012/3/7 Antonio Silva <aolinto.lst@gmail.com>:
Olá,
Rodo o R 64-bit no Ubuntu 10.04 em uma máquina com processador Core i7 e 8 Gb de RAM.
Nesta semana começei a fazer uma análise de cluster, utilizando basicamente o pacote vegan, sobre uma matriz grande.
O cálculo das ligações (hclust) levou três hora e meia para ser efetuado (!!!). Vi que apenas um núcleo do processador estava sendo utilizado.
Começei então a procurar alternativas que permitissem o aceleramento dos cálculos e a utilização dos outros núcleos, que estão sub-utilizados.
Li sobre o pacote multicore e outros, inclusive em mensagens nesta lista. Muitas coisas não ficaram claras para mim e, no final, não compreendi como proceder sua utilização no meu caso (ou mesmo se é possível).
É possivel rodar uma análise de cluster fazendo utilização dos diversos núcleos?
Agradeço qualquer orientação e/ou indicação de documentação.
Abraços,
Antônio
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca São Paulo, Brasil
_______________________________________________ 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.

com um CMR seria mais facil postar uma dica :) Elias T. Krainski
________________________________ De: Antonio Silva <aolinto.lst@gmail.com> Para: R-br <r-br@listas.c3sl.ufpr.br> Enviadas: Quarta-feira, 7 de Março de 2012 9:20 Assunto: [R-br] sobre a utilização de processamento em vários núcleos
Olá,
Rodo o R 64-bit no Ubuntu 10.04 em uma máquina com processador Core i7 e 8 Gb de RAM.
Nesta semana começei a fazer uma análise de cluster, utilizando basicamente o pacote vegan, sobre uma matriz grande.
O cálculo das ligações (hclust) levou três hora e meia para ser efetuado (!!!). Vi que apenas um núcleo do processador estava sendo utilizado.
Começei então a procurar alternativas que permitissem o aceleramento dos cálculos e a utilização dos outros núcleos, que estão sub-utilizados.
Li sobre o pacote multicore e outros, inclusive em mensagens nesta lista. Muitas coisas não ficaram claras para mim e, no final, não compreendi como proceder sua utilização no meu caso (ou mesmo se é possível).
É possivel rodar uma análise de cluster fazendo utilização dos diversos núcleos?
Agradeço qualquer orientação e/ou indicação de documentação.
Abraços,
Antônio
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca
São Paulo, Brasil
_______________________________________________ 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.

Benilton, obrigado. Vou ler sobre o pacote Rclusterpp. Elias, não sei o que é "CMR", desculpe me. Caso seja algum exemplo que se possa reproduzir, o que estou fazendo é a continuação de outra mensagem que escrevi e que você me deu uma ótima dica. dis<-vegdist(dados,"bray") clu<-hclust(dis,"ward") A matriz de dados que estou utilizando 20 mil linhas e 31 colunas. Para fazer a linha do hclust estou gastando mais que três horas. Tenho matrizes maiores que não rodaram por falta de memória, mas isto já é outro tópico, certo? Abraços, Antônio Em 7 de março de 2012 09:43, Elias T. Krainski <eliaskrainski@yahoo.com.br>escreveu:
com um CMR seria mais facil postar uma dica :)
Elias T. Krainski
------------------------------ *De:* Antonio Silva <aolinto.lst@gmail.com> *Para:* R-br <r-br@listas.c3sl.ufpr.br> *Enviadas:* Quarta-feira, 7 de Março de 2012 9:20 *Assunto:* [R-br] sobre a utilização de processamento em vários núcleos
Olá,
Rodo o R 64-bit no Ubuntu 10.04 em uma máquina com processador Core i7 e 8 Gb de RAM.
Nesta semana começei a fazer uma análise de cluster, utilizando basicamente o pacote vegan, sobre uma matriz grande.
O cálculo das ligações (hclust) levou três hora e meia para ser efetuado (!!!). Vi que apenas um núcleo do processador estava sendo utilizado.
Começei então a procurar alternativas que permitissem o aceleramento dos cálculos e a utilização dos outros núcleos, que estão sub-utilizados.
Li sobre o pacote multicore e outros, inclusive em mensagens nesta lista. Muitas coisas não ficaram claras para mim e, no final, não compreendi como proceder sua utilização no meu caso (ou mesmo se é possível).
É possivel rodar uma análise de cluster fazendo utilização dos diversos núcleos?
Agradeço qualquer orientação e/ou indicação de documentação.
Abraços,
Antônio
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca São Paulo, Brasil
_______________________________________________ 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.
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca (Fisheries Institute) São Paulo, Brasil

Não sou expert no assunto, mas acho que há dois tipos de paralelização - baixo nível: paralelização em contas matriciais (feitas em fortran) - alto nível: paralelização de loops de scripts em R (mclapply do multicore) A sua conta (calculo de distancia) poderia ser paralelizada em baixo nivel (mas eu nao sei como fazer) Mesmo fazendo paralelização, o uso de memoria e' o problema principal no seu caso.Ai vale a dica do Benilton. Att. Elias T. Krainski
________________________________ De: Antonio Silva <aolinto.lst@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Quarta-feira, 7 de Março de 2012 11:09 Assunto: Re: [R-br] sobre a utilização de processamento em vários núcleos
Benilton, obrigado. Vou ler sobre o pacote Rclusterpp.
Elias, não sei o que é "CMR", desculpe me. Caso seja algum exemplo que se possa reproduzir, o que estou fazendo é a continuação de outra mensagem que escrevi e que você me deu uma ótima dica.
dis<-vegdist(dados,"bray") clu<-hclust(dis,"ward")
A matriz de dados que estou utilizando 20 mil linhas e 31 colunas. Para fazer a linha do hclust estou gastando mais que três horas. Tenho matrizes maiores que não rodaram por falta de memória, mas isto já é outro tópico, certo?
Abraços,
Antônio
Em 7 de março de 2012 09:43, Elias T. Krainski <eliaskrainski@yahoo.com.br> escreveu:
com um CMR seria mais facil postar uma dica :)
Elias T. Krainski
________________________________ De: Antonio Silva <aolinto.lst@gmail.com> Para: R-br <r-br@listas.c3sl.ufpr.br> Enviadas: Quarta-feira, 7 de Março de 2012 9:20 Assunto: [R-br] sobre a utilização de processamento em vários núcleos
Olá,
Rodo o R 64-bit no Ubuntu 10.04 em uma máquina com processador Core i7 e 8 Gb de RAM.
Nesta semana começei a fazer uma análise de cluster, utilizando basicamente o pacote vegan, sobre uma matriz grande.
O cálculo das ligações (hclust) levou três hora e meia para ser efetuado (!!!). Vi que apenas um núcleo do processador estava sendo utilizado.
Começei então a procurar alternativas que permitissem o aceleramento dos cálculos e a utilização dos outros núcleos, que estão sub-utilizados.
Li sobre o pacote multicore e outros, inclusive em mensagens nesta lista. Muitas coisas não ficaram claras para mim e, no final, não compreendi como proceder sua utilização no meu caso (ou mesmo se é possível).
É possivel rodar uma análise de cluster fazendo utilização dos diversos núcleos?
Agradeço qualquer orientação e/ou indicação de documentação.
Abraços,
Antônio
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca
São Paulo, Brasil
_______________________________________________ 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.
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca (Fisheries Institute) São Paulo, Brasil
_______________________________________________ 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.

Informacoes sobre CMR no rodape de toda msg... e tbm aqui: https://gist.github.com/1088208

Olá Benilton e Elias Instalei o Rclusterpp e gastei menos que 20 segundos para fazer o que antes levava 3 horas (!!!) Estou verificando se está tudo OK. Coloquei minha matriz de dados em http://www.datafilehost.com/download-696672da.html A rotina que estava seguindo era library(vegan) # carrega a matriz mat<-read.csv("Dados.csv",row.names=1,sep=";",header=T,dec=",") # verfica dimensões e os dados das primeiras linhas dim(mat) head(mat) # substitui NA por zero mat[is.na(mat)]<-0 head(mat) summary(mat) # logaritmiza os dados mat.log <- log(mat+1) head(mat.log) # obtem uma amostra da matriz original - não consegui rodar com todas as linhas ns<-20000 row<-c(1:nrow(mat.log)) srow<-sample(row,ns,replace=F) mat.logs<-mat.log[srow,] # calcula distância e ligação dis<-vegdist(mat.logs,"bray") clu<-hclust(dis,"ward") # dendrograma plot(clu,labels=FALSE) nl<-7 # indica número de grupos grp<-cutree(clu, nl) r <- rect.hclust(clu, nl) text(cumsum(sapply(r,length)), rep(mean(tail(unique(clu$hei),2)), length(r)), paste(unique(grp[clu$ord]))) Com o Rclusterpp fiquei com library(Rclusterpp) clu2 <- Rclusterpp.hclust(mat.log, method="ward", distance="euclidean") # não há distância de Bray-Curtis, aqui consigo rodar toda a matriz. plot(clu2,labels=FALSE) Agora estou procurando ver como determino os grupos (por nível de corte ou número de grupos), e obtenho seus números e objetos componentes. Comandos como rect.hclust e cutree parecem que não funcionam. Agradeço qualquer dica. Abraços, Antônio Em 7 de março de 2012 11:17, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
Informacoes sobre CMR no rodape de toda msg... e tbm aqui: https://gist.github.com/1088208 _______________________________________________ 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.
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca São Paulo, Brasil

Amigos de R, Eu nao posso dizer que tenho experiencia nesse topico, no entanto eu tenho um parceiro que esta envolvido num projeto em comum comigo em que parte do projeto é simulaçao de dados. Ele me cedeu o script e segue abaixo o pedaço que fez com que a simulação demorasse de 6 para 1,5 horas. Talvez ajude. #initiate a cluster to run the analysis and save the results for the individual samples in parallel cluster<-makeCluster(4, type = "SOCK") clusterSetupRNG(cluster, seed = 29012001) registerDoSNOW(cluster) # Cycle through the conditions and use the cutpoint-function to generate 1000 samples for each condition and save the result for each group of samples with the same condition into an csv-file. foreach(i= 1:length(conditions[,1])) %dopar% { tmp<-cutpoint(conditions[i,1], conditions[i,2], conditions[i,3], conditions[i,4]) res<-cbind(conditions[i,1:4], tmp) name<-paste(conditions[i,1], conditions[i,2], conditions[i,3], conditions[i,4], ".txt", sep="_") write.table(res, name) } Dr. Pedro Emmanuel A. A. do Brasil Curriculum Lattes: http://lattes.cnpq.br/6597654894290806 Instituto de Pesquisa Clínica Evandro Chagas Fundação Oswaldo Cruz Rio de Janeiro - Brasil Av. Brasil 4365, CEP 21040-360, Tel 55 21 3865-9648 email: pedro.brasil@ipec.fiocruz.br email: emmanuel.brasil@gmail.com ---Apoio aos softwares livres www.zotero.org - gerenciamento de referências bibliográficas. www.broffice.org ou www.libreoffice.org - textos, planilhas ou apresentações. www.epidata.dk - entrada de dados. www.r-project.org - análise de dados. www.ubuntu.com - sistema operacional Em 7 de março de 2012 11:09, Antonio Silva <aolinto.lst@gmail.com> escreveu:
Benilton, obrigado. Vou ler sobre o pacote Rclusterpp.
Elias, não sei o que é "CMR", desculpe me. Caso seja algum exemplo que se possa reproduzir, o que estou fazendo é a continuação de outra mensagem que escrevi e que você me deu uma ótima dica.
dis<-vegdist(dados,"bray") clu<-hclust(dis,"ward")
A matriz de dados que estou utilizando 20 mil linhas e 31 colunas. Para fazer a linha do hclust estou gastando mais que três horas. Tenho matrizes maiores que não rodaram por falta de memória, mas isto já é outro tópico, certo?
Abraços,
Antônio
Em 7 de março de 2012 09:43, Elias T. Krainski <eliaskrainski@yahoo.com.br
escreveu:
com um CMR seria mais facil postar uma dica :)
Elias T. Krainski
------------------------------ *De:* Antonio Silva <aolinto.lst@gmail.com> *Para:* R-br <r-br@listas.c3sl.ufpr.br> *Enviadas:* Quarta-feira, 7 de Março de 2012 9:20 *Assunto:* [R-br] sobre a utilização de processamento em vários núcleos
Olá,
Rodo o R 64-bit no Ubuntu 10.04 em uma máquina com processador Core i7 e 8 Gb de RAM.
Nesta semana começei a fazer uma análise de cluster, utilizando basicamente o pacote vegan, sobre uma matriz grande.
O cálculo das ligações (hclust) levou três hora e meia para ser efetuado (!!!). Vi que apenas um núcleo do processador estava sendo utilizado.
Começei então a procurar alternativas que permitissem o aceleramento dos cálculos e a utilização dos outros núcleos, que estão sub-utilizados.
Li sobre o pacote multicore e outros, inclusive em mensagens nesta lista. Muitas coisas não ficaram claras para mim e, no final, não compreendi como proceder sua utilização no meu caso (ou mesmo se é possível).
É possivel rodar uma análise de cluster fazendo utilização dos diversos núcleos?
Agradeço qualquer orientação e/ou indicação de documentação.
Abraços,
Antônio
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca São Paulo, Brasil
_______________________________________________ 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.
-- Antônio Olinto Ávila da Silva Biólogo / Oceanógrafo Instituto de Pesca (Fisheries Institute) São Paulo, Brasil
_______________________________________________ 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.
participantes (4)
-
Antonio Silva
-
Benilton Carvalho
-
Elias T. Krainski
-
Pedro Emmanuel Alvarenga Americano do Brasil