Переходимо на 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)