Переход к parApply
Для параллельного выполнения кода с помощью пакета parallel используется следующий базовый процесс из трёх шагов.
- Создайте кластер с помощью
makeCluster(). - Выполните нужные вычисления.
- Остановите кластер с помощью
stopCluster().
Простейший способ создать кластер — передать число в makeCluster(). Это создаст кластер стандартного типа, который будет выполнять код на указанном количестве ядер.
Объект dd — это таблица данных с 10 столбцами и 100 строками. Следующий код использует apply() для вычисления медиан по столбцам:
apply(dd, 2, median)
Чтобы выполнить это в параллельном режиме, замените apply() на parApply(). Аргументы этой функции совпадают с аргументами apply(), за исключением того, что перед обычными аргументами нужно указать объект кластера.
Это упражнение является частью курса
Эффективный код на R
Инструкции к упражнению
- Используйте функцию
detectCores(), чтобы вывести количество доступных ядер в консоль. - Создайте кластер с помощью
makeCluster(), задав количество ядер равным 2. Сохраните результат в переменнуюcl. - Перепишите приведённую выше функцию
apply(), используяparApply(). Обратите внимание: первым аргументом теперь должен быть объект кластераcl. - Остановите кластер с помощью
stopCluster().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Determine the number of available cores
___
# Create a cluster via makeCluster
cl <- makeCluster(___)
# Parallelize this code
apply(dd, 2, median)
# Stop the cluster
stopCluster(cl)