Почему при использовании пакета параллельных вычислений мой код R работает медленнее - PullRequest
0 голосов
/ 02 мая 2018

Я использую параллельный пакет для лучшего использования ЦП, и я подумал, что это значительно сократит время вычислений. Но я получил противоположные результаты, в то время как загрузка процессора достигла почти 100% для 4-х ядер, которые я получил, временные результаты показывают, что использование параллели дало худшие результаты, чем не использование. Как это может быть? Это проблема с пакетом? Я что-то упустил? мой код большой, поэтому я не могу представить его здесь ..

time without parallel   45 sec  1.04 min 1.5 min 6.14 min
time with parallel      1.3 min 1.7 min  2.3 min 14.5 min
number of variables      78     78       78      870
number of rows          30k     50k      70k    70k

1 Ответ

0 голосов
/ 03 мая 2018

Прежде чем перейти к параллельной обработке, вы должны попытаться улучшить производительность одного ядра. Не видя ваш код, мы не можем дать никаких конкретных советов, но первым шагом должно стать профилирование вашего кода. Полезные ресурсы http://adv -r.had.co.nz / Performance.html и https://csgillespie.github.io/efficientR/.

Как только вы добились хорошей одноядерной производительности, вы можете попробовать параллельную обработку. Как указывалось в комментариях, очень важно поддерживать низкие расходы на связь. Опять же, не видя ваш код, мы не можем дать никаких конкретных советов, но вот несколько общих советов:

  • Не используйте последовательность из нескольких параллельных шагов. Один параллельный шаг, который выполняет всю работу в последовательности, будет иметь меньшие накладные расходы на связь.
  • Используйте разумный размер куска. Если у вас есть 10.000 заданий, отправляйте их не индивидуально, а в подходящих группах. Пакет parallel делает это по умолчанию, если вы не используете «балансировку нагрузки». Если вам по какой-то причине требуется балансировка нагрузки, то следует сгруппировать задачи в меньшее количество фрагментов, которые будут обрабатываться алгоритмом распределения нагрузки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...