ParLapply занимает совершенно другое количество времени внутри и снаружи кода - PullRequest
0 голосов
/ 19 сентября 2018

У меня работает длинный код, где в какой-то момент я регистрирую кластер из нескольких узлов и использую parApply.Время, необходимое для выполнения этого параллельного вычисления внутри кода, используя system.time, сохраните его в переменной и посмотрите на него после завершения кода.Давайте назовем его CalculationTimeInsideCode.

Когда я сохраняю фреймы данных и вычисляю тот же фрагмент кода вне кода (без перезапуска R или освобождения памяти!) - т.е. все еще параллельно, но беря только необходимые строки изкод для выполнения этой части - та же самая строка занимает примерно 1/50 от той, что была вне кода (давайте назовем его CalculationTimeOutsideCode).

Это связано с другими переменными, занимающими память во время выполнения кода, которые нене существует больше вне кода?

Команда, которую я использую для синхронизации (в обоих случаях):

system.time({result <- parLapply(cl, df , fun = SomeFunction)})

, где cl - зарегистрированный кластер.

1 Ответ

0 голосов
/ 19 сентября 2018

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

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