¿Hay algún problema al acceder/escribir en variables globales al usar el paquete doSNOW en múltiples núcleos?escribiendo a variables globales al usar doSNOW y haciendo la paralelización en R?
En el siguiente programa, cada uno de los MyCalculations (ii) escribe en la columna II-ésima de la matriz "GLOBALVariable" ...
¿Cree que el resultado será correcto? ¿Habrá capturas ocultas?
¡Muchas gracias!
p.s. Tengo que escribir en la variable global porque este es un ejemplo simplificado, de hecho, tengo muchos resultados que deben transportarse desde los bucles paralelos ... por lo tanto, probablemente la única forma es escribir en variables globales. ..
library(doSNOW)
MaxSearchSpace=44*5
globalVariable=matrix(0, 10000, MaxSearchSpace)
cl<-makeCluster(7)
registerDoSNOW(cl)
foreach (ii = 2:nMaxSearchSpace, .combine=cbind, .verbose=F) %dopar%
{
MyCalculations(ii)
}
stopCluster(cl)
ps Estoy preguntando: dentro del marco de DoSnow, existe el peligro de acceder/escribir variables globales ... thx
Puede considerar el uso de [doRedis] (https://github.com/bwlewis/doRedis) que resolvería su problema con la necesidad de acceder a las variables globales. – daroczig