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

Boa noite Benilton. Vi suas recomendações, mas veja que no momento precisaria apenas chamar uma mesma função (no caso, eigen.f) várias vezes, de forma paralela. Gostaria de saber da possibilidade da criação de uma função com nome (eigen2.f), por exemplo, apenas para que fossem efetuados testes. Já tentei a criação de tal função, mas quando compilo o R, aparece um erro de compilação. Também tentei fazer a chamada a função eigen.f por meio apenas de diversas chamadas, por exemplo: mclapply(1:1, function(i) { g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4) },mc.cores=4 ) Mas o processador efetua apenas chamada a cada vez, mesmo utilizando a função mclapply. Alguma sugestão? Obrigado, Carlos Beleti.

Junior, não sei se entendi totalmente seu problema, mas acho que não tem a ver com o paralelismo e sim com o retorno do mclapply. Tente assim: a<-mclapply(1:1, function(i) { g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4) cbind(g1,g2,g3,g4) },mc.cores=4) a[[1]] abs Paulo Nogueira Starzynski Em 24 de fevereiro de 2012 00:33, Junior Beleti <beleti.junior@gmail.com>escreveu:
Boa noite Benilton.
Vi suas recomendações, mas veja que no momento precisaria apenas chamar uma mesma função (no caso, eigen.f) várias vezes, de forma paralela.
Gostaria de saber da possibilidade da criação de uma função com nome (eigen2.f), por exemplo, apenas para que fossem efetuados testes.
Já tentei a criação de tal função, mas quando compilo o R, aparece um erro de compilação.
Também tentei fazer a chamada a função eigen.f por meio apenas de diversas chamadas, por exemplo:
mclapply(1:1, function(i) {
g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4)
},mc.cores=4 )
Mas o processador efetua apenas chamada a cada vez, mesmo utilizando a função mclapply.
Alguma sugestão?
Obrigado, Carlos Beleti.
_______________________________________________ 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.

Eu não encontrei esta função mclapply, precisa de alguma bibliotéca para consegui-la? Junior, não sei se entendi totalmente seu problema, mas acho que não tem a ver com o paralelismo e sim com o retorno do mclapply. Tente assim: a<-mclapply(1:1, function(i) { g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4) cbind(g1,g2,g3,g4) },mc.cores=4) a[[1]] abs Paulo Nogueira Starzynski Em 24 de fevereiro de 2012 00:33, Junior Beleti <beleti.junior@gmail.com> escreveu: Boa noite Benilton. Vi suas recomendações, mas veja que no momento precisaria apenas chamar uma mesma função (no caso, eigen.f) várias vezes, de forma paralela. Gostaria de saber da possibilidade da criação de uma função com nome (eigen2.f), por exemplo, apenas para que fossem efetuados testes. Já tentei a criação de tal função, mas quando compilo o R, aparece um erro de compilação. Também tentei fazer a chamada a função eigen.f por meio apenas de diversas chamadas, por exemplo: mclapply(1:1, function(i) { g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4) },mc.cores=4 ) Mas o processador efetua apenas chamada a cada vez, mesmo utilizando a função mclapply. Alguma sugestão? Obrigado, Carlos Beleti.

multicore... só funciona em *unix like! 2012/2/24 Mauro Sznelwar <sznelwar@uol.com.br>:
Eu não encontrei esta função mclapply, precisa de alguma bibliotéca para consegui-la?
Junior, não sei se entendi totalmente seu problema, mas acho que não tem a ver com o paralelismo e sim com o retorno do mclapply. Tente assim:
a<-mclapply(1:1, function(i) {
g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4) cbind(g1,g2,g3,g4)
},mc.cores=4)
a[[1]]
abs Paulo Nogueira Starzynski
Em 24 de fevereiro de 2012 00:33, Junior Beleti <beleti.junior@gmail.com> escreveu:
Boa noite Benilton.
Vi suas recomendações, mas veja que no momento precisaria apenas chamar uma mesma função (no caso, eigen.f) várias vezes, de forma paralela.
Gostaria de saber da possibilidade da criação de uma função com nome (eigen2.f), por exemplo, apenas para que fossem efetuados testes.
Já tentei a criação de tal função, mas quando compilo o R, aparece um erro de compilação.
Também tentei fazer a chamada a função eigen.f por meio apenas de diversas chamadas, por exemplo:
mclapply(1:1, function(i) {
g1 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m1) g2 <- mvrnorm(n=1, mat.cokri[[1]][1:2601],m2) g3 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m3) g4 <- mvrnorm(n=1, mat.cokri[[1]][2602:5202],m4)
},mc.cores=4 )
Mas o processador efetua apenas chamada a cada vez, mesmo utilizando a função mclapply.
Alguma sugestão?
Obrigado, Carlos Beleti.
_______________________________________________ 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.

Eu ja' nao sei mais o contexto dessa mensagem... aparentemente o thread ID foi perdido? Enfim, sua chamada usa apenas 1 processador basicamente pelo seguinte motivo: - vc ta' passando apenas 1 elemento (que eh o 1:1) para execucao... ou seja, ele aloca os 4 cores, mas so' usa 1, pois o comprimento de 1:1 e' 1. Uma vez dentro do mclapply, nao ha' distribuicao de tarefas... isso e' importante vc lembrar em computacao paralela... Uma vez no no' de execucao, voce nao faz distribuicao. Ajudaria MUITO se houvesse um exemplo reproduzivel... entao vou fingir que sei o que cada elemento representa, assim como imaginar que o q vc queira fazer seja executar cada uma das linhas g1...g4 num nucleo diferente: ## eu nao testei o codigo abaixo... afinal apenas fingi saber o q eram os elementos pars <- list(list(1:2601, m1), list(1:2601, 2), list(2602:5202, m3), list(2602:5202, m4)) myf <- function(idx, sigma) mvrnorm(n=1, mat.cokri[[1]][idx], sigma) mclapply(pars, function(lst) do.call(myf, lst)) b
participantes (5)
-
Benilton Carvalho
-
FHRB Toledo
-
Junior Beleti
-
Mauro Sznelwar
-
Paulo Nogueira