НачатьНачать бесплатно

Темпы роста населения с помощью mclapply()

Как программист-статистик, вы часто применяете бутстрэп в R. Одна из типичных задач — построить бутстрэп-распределение для среднего темпа роста населения по разным странам за определённый период времени.

Текущий код использует кластер PSOCK и функцию parLapply() для параллельного выполнения этого процесса. Однако для производственных нужд он работает недостаточно быстро. Ваш руководитель попросил вас сравнить производительность кластеров PSOCK и FORK.

В рабочем пространстве загружен объект gr_list. Каждый элемент gr_list содержит темпы роста населения для отдельной страны за период с 2001 по 2021 год. Также доступна функция бутстрэпа boot_dist(). Пакеты parallel и microbenchmark уже загружены.

Это упражнение является частью курса

Параллельное программирование на R

Посмотреть курс

Инструкции к упражнению

  • Используйте FORK-версию функции parLapply().
  • Передайте список входных данных.
  • Укажите функцию, которую нужно применить к каждому элементу входных данных.
  • Задайте четыре ядра для кластера FORK.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

microbenchmark(
  "PSOCK" = {
    cl <- makeCluster(4)
    parLapply(cl, gr_list, boot_dist)
    stopCluster(cl)
  },
  # Use the FORK version of parLapply()
  "FORK" = ___(
    # Supply input
    ___,
    # Supply function to apply
    ___,
    # Specify number of cores
    ___ = ___),
  times = 1)
Редактировать и запускать код