Я выполняю параллельные вычисления с использованием пакетов foreach
и doParallel
при работе с динамической моделью c.
numcores <- detectCores() -1
mycluster <- makeCluster(numcores)
registerDoParallel(mycluster)
ii <- 1:2
jj <- 1:20
sgLASSO_DFM_2s_agg <- foreach(i = ii, .packages = c("nowcasting", "dplyr", "stringr",
"midasr", "tibble", "tseries", "matlab")) %:% foreach(j =jj)%dopar% {
assignInNamespace("SKF", my.SKF, "nowcasting")
assignInNamespace("bridge", my.bridge, "nowcasting")
if (y_pred[[i]][[j]]$sglassoFit$minindex == 1 | y_pred[[i]][[j]]$sglassoFit$minindex == num_lam ){
prediction <- NA
}else{
tdata_ps <- select(tdata_p, PRD_DE, y_pred[[i]][[j]]$x_selected + 1)
url_list <- url_list[y_pred[[i]][[j]]$x_selected, ]
frequency <- c(rep(4, p + 1), rep(12, nrow(url_list)))
prediction <- data_SGL(tdata_ps, data.y, c, m, blocks,
frequency, y_pred[[i]][[j]]$y_selected, '2s_agg')
}
}
Как вы можете видеть, код должен работать вычисления для индексов итерации ii и jj.
В этом примере будет выполнено 20 вычислений для каждого ii = (1, 2).
Как ни странно, ошибка возникает, если количество вычислений сразу превышает количество бэкэнд-программ (= mycluster
= 3).
Я не думаю, что это проблема кодирования, потому что если я установлю число В вычислениях, которые R выполняет одновременно с числом бэкэнд-программ (т. е. 3), ошибки не возникло.
Другими словами, выполните вычисления с ii <-1: 1, jj < -1: 3, затем jj <-4: 6 и затем jj <-7: 9 и повторите расчет. Я не могу получить результаты ошибок. </p>
Я хотел бы знать причину и решение этой проблемы. Заранее спасибо.