Можно ли запускать biglm в параллельном режиме? Я пытался использовать doMC, а затем встраивать biglm в цикл foreach, но, похоже, все ядра будут работать над одним и тем же фрагментом данных одновременно. Как я могу распараллелить это?Как использовать biglm с doMC и foreach
library(doMC)
RegisterDoMC(4)
require(ffbase)
sample <- read.table.ffdf(file="sample_output.csv", FUN = "read.csv", na.strings = "")
library(biglm)
model<-list()
biglmupdate<-function(dataset,start,end) {
if (start==1) {
model <<- biglm(a~b+c, data=dataset[start:end,])
}
else {
model <<- update(model,dataset[start:end,])
}
}
chunks <- floor(dim(sample)[1]/220000)+1
start<-0; end<-0;
foreach (i = 1: chunks) %dopar% {
start = end +1; end =ifelse (i == chunks, dim(sample)[1], start+220000);
print(paste("chunk ",i," ",start,":",end," started at:", Sys.time()));
biglmupdate(dataset = sample, start, end);
print(paste("chunk ",i,"ended at:", Sys.time()));
}
Обновление QR-декомпозиции выполняется в коде C & fortran пакета biglm и в настоящее время является последовательным (см. Biglm ::: update.biglm & biglm ::: update.bigqr). Вы можете попросить автора билльма посмотреть, видит ли он возможность разрешать несекретные обновления QR и оценку сэндвича. – jwijffels