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

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

Ответы

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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