Как разрешить R использовать все ядра компьютера?

#r #parallel-processing #multicore

#r #параллельная обработка #многоядерный

Вопрос:

Я читал, что R использует только один процессор. Как я могу разрешить R использовать все доступные ядра для запуска статистических алгоритмов?

Ответ №1:

Да, для начала ознакомьтесь с Представлением задач высокопроизводительных вычислений на CRAN. Здесь перечислены подробные сведения о пакетах, которые могут использоваться для поддержки параллельных вычислений на одной машине.

Начиная с версии 2.14.0 R, имеется встроенная поддержка параллельных вычислений с помощью пакета parallel, который включает в себя слегка измененные версии существующих пакетов snow и multicore. Многоядерный. В параллельном пакете есть виньетка, которую вы должны прочитать. Вы можете просмотреть это с помощью:

 vignette(package="parallel", topic = "parallel")
  

Существуют другие способы использования ваших нескольких ядер, например, с помощью многопоточной BLAS для вычислений в линейной алгебре.

Ускорит ли что-либо из этого «вычисления статистики», которые вы хотите выполнить, будет зависеть от того, каковы эти «вычисления статистики». Запуск нескольких потоков или рабочих элементов влечет за собой накладные расходы на их настройку, управление ими и сбор результатов. Некоторые операции имеют преимущества (некоторые большие, некоторые маленькие) от использования нескольких ядер / потоков, другие замедляются из-за этих дополнительных накладных расходов.

Короче говоря, не ожидайте, что время вычислений сократится в n раз за счет использования n ядер вместо всего лишь 1.

Комментарии:

1. Обратите внимание, что для просмотра виньетки вам, возможно, придется сделать vignette(package="parallel",topic="parallel") . Для меня, если я не добавляю topic= , он просто отображает виньетку.

2. @XuWang Да, действительно. Я хотел сказать, что вы можете указать, как это указано в этом коде — я не смог вспомнить название темы, и мне еще предстоит перейти на 2.14.0 в офисе. Просто ленюсь. Но отредактируем вышесказанное. Спасибо.

3. Не беспокойтесь. Судя по вашим многочисленным подробным ответам, вы полная противоположность ленивости!

4. Я не думаю, что виньетка доступна (по крайней мере, в R и parallel v 3.0.2)

5. @Abe Что заставляет тебя так говорить? vignnette Строка кода, которую я показываю, работает для меня, по крайней мере, в R версии 3.0.3

Ответ №2:

Если вам случается выполнять несколько * итераций одного и того же (или один и тот же код с несколькими * разными параметрами), проще всего запустить несколько копий R — ОС распределит работу на разные ядра.
В противном случае пойдите и узнайте, как использовать реальные параллельные расширения.

Ради этого ответа, несколько означает меньше или равно количеству ядер.