При запуске заданий RStan в R на кластере возможно ли использование слишком большого количества ядер, что приведет к нехватке памяти? - PullRequest
0 голосов
/ 22 октября 2019

В настоящее время я пытаюсь запустить распараллеленное задание RStan в вычислительном кластере в R. Я делаю это, указав следующие два параметра:

options(mc.cores = parallel::detectCores())
rstan_options(auto_write = TRUE)

Выше выделено 48 доступных ядер, а общий объем ОЗУ у меня составляет 180 ГБ. Я всегда теоретически думал, что чем больше ядер и больше оперативной памяти, тем лучше. Я выполняю очень длинные задания и получаю недостаточно ошибок памяти в моем кластере. Мне интересно, если я, возможно, не даю достаточно памяти для каждого ядра. Возможно ли, что каждое из 48 ядер разделит 180 ГБ, и каждое ядро ​​будет максимально использовано?

Если бы я использовал 180 ГБ ОЗУ и вместо этого имел 3 ядра, это обошло бы ошибки памяти? Или неважно, сколько у меня ядер, общий объем памяти всегда будет использоваться в какой-то момент, если это долгая работа? Спасибо!

1 Ответ

1 голос
/ 22 октября 2019

RStan будет использовать столько ядер, сколько имеется цепочек (по умолчанию 4). И если вы используете оболочку в кластере Linux, она будет разветвляться, а не делать копии данных. Итак, если у вас есть свободные ядра, вам лучше использовать их для распараллеливания вычислений в программе Stan, используя, если возможно, функцию map_rect.

Но все это, вероятно, не связано с проблемами вашей памяти. В большинстве случаев не требуется даже 1 ГБ.

...