Я пробую следующий код, который включает foreach
l oop для вычисления нормализованных столбцов матрицы A:
library(doParallel)
library(tictoc)
A <- matrix(1.0, 5000, 1000)
cl <- makeCluster(2)
registerDoParallel(cl)
gcinfo(TRUE)
tic()
res1 <- foreach(i=1:nrow(A), .combine='rbind') %dopar% (A[i,]/mean(A[i,]))
toc()
gcinfo(FALSE)
stopCluster(cl)
из Rstudio, я вижу, что размер матрицы A составляет ~ 38Мб. Но когда я запускаю приведенный выше сценарий, я обнаруживаю, что сборщик мусора сообщает следующие значения:
36.6 Mbytes of cons cells used (56%)
982.1 Mbytes of vectors used (33%)
то, что я не считаю, asp явно - это то, на что была потрачена вся память. Фактически, приведенный выше код работает быстрее с одним рабочим (% do%), а не с двумя рабочими (% dopar%). Вы знаете причину большого использования памяти этим скриптом?
Спасибо