Как позволить R использовать все ядра компьютера? - PullRequest
14 голосов
/ 11 ноября 2011

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

Ответы [ 2 ]

23 голосов
/ 11 ноября 2011

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

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

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

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

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

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

9 голосов
/ 11 ноября 2011

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

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

...