[R-br] Problemas em foreach e parallel

Clécio da Silva Ferreira clecio.ferreira em ufjf.edu.br
Quarta Outubro 21 09:03:08 BRST 2015


Prezados, estou tentando utilizar as ferramentas de paralelo em R para
Windows. Acontecem dois problemas:
1. Às vezes parece que os workers não 'ativam', dando a mensagem de erro
abaixo. Note que não roda, pois o tetaM continua como matriz de 0s. Eu às
vezes tenho de colar as funções mais de uma vez para então 'ligar'.

2. Neste exemplo, eu faço replicações de amostras de um MRLM (só um
treinamento) e  estimo o modelo para cada amostra. Independente da
quantidade de amostras que eu gero (M amostras), ele sempre me devolve com
3 resultados a menos. 3 é o nº de cores que eu coloquei.

Alguém tem alguma ideia da origem do problema? Ah, eu fiz para outros
modelos que trabalho e ocorrem os mesmos problemas


# Criação dos cores em paralelo:
library(doParallel)
library(foreach)
cl<-makeCluster(3, type="SOCK")
library(doSNOW)
registerDoSNOW(cl)


# Código

# Modelo Normal
n=100
M=10
p=2
X=matrix(1,n,p)
X[,2]=runif(n)
beta0=matrix(c(5,1),2,1)
sigma2=1

yM=matrix(0,n,M)
for (k in 1:M) {
erro=rnorm(n,0,sigma2)
yM[,k]=X%*%beta0+erro
}


tetaM=matrix(0,p,M)
strt<-Sys.time()
tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {
y=yM[,k]
tetaM[,k]=lm(y~X-1)$coefficients
#sgn.logL(teta3,y,X)
}
print(Sys.time()-strt)

tetaM


# Rodando no R:

> tetaM=matrix(0,p,M)
> strt<-Sys.time()
> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {
+ y=yM[,k]
+ tetaM[,k]=lm(y~X-1)$coefficients
+ #sgn.logL(teta3,y,X)
+ }
Error in e$fun(obj, substitute(ex), parent.frame(), e$data) :
  worker initialization failed: 5.207760032192210.72556160440376
> print(Sys.time()-strt)
Time difference of 0.06304097 secs
>
> tetaM
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    0    0    0    0    0    0     0
[2,]    0    0    0    0    0    0    0    0    0     0
> tetaM=matrix(0,p,M)
> strt<-Sys.time()
> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% {
+ y=yM[,k]
+ tetaM[,k]=lm(y~X-1)$coefficients
+ #sgn.logL(teta3,y,X)
+ }
> print(Sys.time()-strt)
Time difference of 0.07505703 secs
>
> tetaM
   result.1 result.2 result.3 result.4 result.6  result.7 result.10
X1 4.738553 4.584143 4.923599 4.962845 4.737695 5.2330998 4.9280171
X2 1.313208 1.855138 1.121618 1.053215 1.571513 0.6168855 0.9040763


Atenciosamente,

Prof. Clécio da Silva Ferreira
Depto de Estatística - UFJF
Tel: (32) 2102-3306
Página: www.ufjf.br/clecio_ferreira
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151021/13e39591/attachment.html>


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