использование памяти foreach в R - PullRequest
0 голосов
/ 07 мая 2020

Я пробую следующий код, который включает 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%). Вы знаете причину большого использования памяти этим скриптом?

Спасибо

...