Темпы роста населения с помощью 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)