Procesamiento paralelo en R con H2O
Estoy configurando un fragmento de código para procesar en paralelo algunos cálculos para N grupos en mis datos usandoforeach
.
Tengo un cálculo que implica una llamada ah2o.gbm
.
En mi configuración actual y secuencial, uso hasta aproximadamente el 70% de mi RAM.
¿Cómo configuro correctamente mi h2o.init () dentro del código paralelo? Me temo que podría quedarme sin RAM cuando uso múltiples núcleos.
Mi máquina con Windows 10 tiene 12 núcleos y 128 GB de RAM.
¿Funcionaría algo como este pseudocódigo?
library(foreach)
library(doParallel)
#setup parallel backend to use 12 processors
cl<-makeCluster(12)
registerDoParallel(cl)
#loop
df4 <-foreach(i = as.numeric(seq(1,999)), .combine=rbind) %dopar% {
df4 <- data.frame()
#bunch of computations
h2o.init(nthreads=1, max_mem_size="10G")
gbm <- h2o.gbm(train_some_model)
df4 <- data.frame(someoutput)
}
fwrite(df4, append=TRUE)
stopCluster(cl)