mclapply в программировании на R - Как я могу убедиться, что все мои ядра и память используются - PullRequest
0 голосов
/ 16 января 2020

Я работаю над выполнением некоторых вычислений с использованием parallel :: mclapply для распараллеливания процесса. У меня высокопроизводительный вычислительный сервер (HP C) с 64 ГБ памяти и 28-ядерным процессором. Скорость выполнения кода сильно возросла после распараллеливания, но много памяти и процессорных ядер теряются. Как я могу сделать это более эффективным?

Вот пример кода:

data_sub <- do.call(rbind, mclapply(ds,predict_function,mc.cores=28)) 

Функция Предиката содержит небольшую функцию для создания методов snaive, naive или Arima, которая будет определена до того, как logi c достигнет вышеуказанной строки.

Вот что я часто вижу в журнале:

enter image description here

Первая строка показывает, что на работу потрачено 51 гигабайт ОЗУ и использовал менее половины выделенного ЦП. Третья строка указывает, что та же программа запускается с теми же данными, но использует больше выделенной памяти, несмотря на недостаточную загрузку ядер ЦП.

В моей голове сейчас три вопроса: как HP C выделяет память для каждой работы ?? Могу ли я разделить память и ядра в моей R-программе для параллельного запуска двух функций? Скажем, запустить метод snaive в 14 ядрах и выделить Ариме оставшиеся 14? Как я могу заставить свою работу использовать всю память и ядра процессора, чтобы сделать это быстрее?

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...