Как реализовать многоядерные процессоры при использовании исчерпывающего метода regsubset на сервере Rstudio - PullRequest
0 голосов
/ 29 декабря 2011

Как бы я переписал свой код, чтобы я мог реализовать использование многоядерности на сервере Rstudio для запуска regsubsets из пакета прыжков с использованием «исчерпывающего» метода? Данные имеют 1200 переменных и 9000 obs, поэтому код здесь сокращен:

model<-regsubsets(price~x + y + z + a + b +  ...., data=sample,
                  nvmax=500,  method=c("exhaustive"))

Наш сервер является четырехъядерным ОЗУ емкостью 7,5 ГБ, этого достаточно для такого уравнения?

1 Ответ

0 голосов
/ 29 декабря 2011

В отношении вашего второго вопроса я бы сказал: просто попробуйте и посмотрите.В общем, набор данных 1200 × 9000 не очень большой, но работает он или нет, также зависит от того, что regsubsets делает под капотом.

В общем, подход здесь состоит в том, чтобы разбить проблему на части и запустить каждую часть на ядре, в вашем случае 4 ядра.Параллелизация работает наиболее эффективно, если процессы, которые мы запускаем на ядре, занимают некоторое время (например, 10 минут).Если это займет очень мало времени, издержки распараллеливания будут только увеличивать время, затрачиваемое на общий анализ.Создать кластер на вашем сервере довольно просто, например, SNOW (доступно в CRAN).Подход, который я часто использую, состоит в том, чтобы создать кластер с использованием пакета doSNOW, а затем использовать функции из пакета plyr. В блоге , который я недавно написал, приведена справочная информация и пример кода.

В вашем конкретном случае, если regsubsets не поддерживает распараллеливание из коробки, вам придется сделать несколькокодирую себяЯ думаю, что метод выбора переменных, такой как regsubsets, требует использования всего набора данных, поэтому я думаю, что решение распараллеливания с помощью параллельного запуска нескольких подмножеств не представляется возможным.Поэтому я думаю, что вам придется адаптировать функцию для включения распараллеливания.Где-то внутри функции оцениваются различные выборки переменных, где вы можете отправить эти оценки различным ядрам.Позаботьтесь о том, чтобы, если такая оценка заняла совсем немного времени, издержки распараллеливания только замедлили бы ваш анализ.В этом случае вам нужно отправить группу оценок каждому ядру, чтобы увеличить время, затрачиваемое на каждый узел, и уменьшить количество накладных расходов при распараллеливании.

...