Проблема с% dopar% & quot; прекращение вызова после выброса экземпляра ‘std :: bad_alloc’ & quot;

Я написал функцию, где я выполняю некоторый код параллельно:

 cl <- makeCluster(nc, outfile = "")
registerDoParallel(cl, nc)

pred <- foreach(s = iter(seq(1L,length(dfr_missings))),
.packages = c('RANN', 'randomForest','magrittr'),
.errorhandling = 'stop',
.verbose = F,
.combine = 'cbind',
.export = c("myRoughfix")) %dopar% {
#
#some code goes here
#
}

stopCluster(cl)
stopImplicitCluster()

Функция работает, как и ожидалось, с меньшими кадрами данных. Однако мне нужно, чтобы он работал с большими.

Я получаю следующую ошибку:

 Error in unserialize(socklist[[n]]) : error reading from connection
terminate called after throwing an instance of 'std::bad_alloc'
what():  std::bad_alloc

Насколько я понимаю сообщение об ошибке, это означает, что мне не хватило памяти. Размер кадра данных, с которым у меня возникают проблемы, составляет ~ 770 МБ. Я работаю на машине с 256 ГБ оперативной памяти и 48 ядрами. Я ожидаю, что эта машина сможет справиться с таким большим объектом. Код не делает ничего, что потребляет много памяти.

Поэтому мой вопрос — возможно ли, что для рабочих установлены ограничения памяти, которыми можно управлять с помощью глобальной опции? Возможно, опция для ОС или makeCluster ().

Любые другие мысли приветствуются.

Постскриптум Я нахожусь на предустановленной виртуальной машине на 64-битной версии Oracle Linux с версией R — «Oracle Distribution of R версия 3.1.1»

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]