R, который автоматически использует несколько ядер?

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

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

Я думаю, это не так просто.

+63
источник поделиться
6 ответов

R может использовать только несколько ядер с помощью дополнительных пакетов и только для некоторых типов операций. Параметры подробно обсуждаются в Просмотр высокопроизводительных вычислений на CRAN

Обновление: От R версии 2.14.0 дополнительные пакеты необязательно требуются из-за включения пакета parallel в качестве рекомендуемого пакета, поставляемого с R. parallel включает функции из пакетов многоядерных и снега, в основном без изменений.

+49
источник

Самый простой способ использования мультипроцессоров - пакет multicore, который включает в себя функцию mclapply(). mclapply() - многоядерная версия lapply(). Таким образом, любой процесс, который может использовать lapply(), может быть легко преобразован в процесс mclapply(). Однако многоядерность не работает в Windows. Я написал сообщение в блоге об этом в прошлом году, которое может быть полезно. Созданный пакет Revolution Analytics, doSMP, НЕ является многопоточной версией R. Это фактически версия многоядерных версий Windows.

Если ваша работа неловко параллельна, это хорошая идея, чтобы получить удобство в стиле структурирования lapply(). Это даст вам легкое segue в mclapply() и даже распределенные вычисления, используя ту же абстракцию.

Все становится намного сложнее для операций, которые не являются "смущающими параллелями".

[EDIT]

В качестве дополнительной заметки Rstudio становится все более популярным как передний конец для R. Я люблю Rstudio и использую его ежедневно. Однако следует отметить, что Rstudio не очень хорошо работает с Multicore (по крайней мере, с октября 2011 года... Я понимаю, что команда RStudio собирается это исправить). Это связано с тем, что Rstudio делает некоторые куски за кулисами, и эти вилки конфликтуют с попытками Multicore развить. Поэтому, если вам нужен Multicore, вы можете написать свой код в Rstuido, но запустите его в простой сессии Jane R.

+33
источник
другие ответы

Связанные вопросы


Похожие вопросы

По этому вопросу вы всегда получаете очень короткие ответы. Самое легкое решение по мне - это пакет снегопад, основанный на снегу. То есть, на одном компьютере Windows с несколькими ядрами. См. Также статью статьи Knaus и др. для простого примера. Снегопад - обертка вокруг снежного пакета и позволяет вам настроить многоядерную машину с несколькими командами. Это определенно меньше хлопот, чем большинство других пакетов (я не пробовал их всех).

В обозревателе действительно есть только несколько задач, которые можно распараллелить, по той простой причине, что вы должны иметь возможность разделить задачи перед многоядерным вычислением. семейство apply, очевидно, является логичным выбором для этого: множественные и независимые вычисления, которые имеют решающее значение для многоядерного использования. Все остальное не всегда легко и многожидко.

Прочитайте также это обсуждение sfApply и пользовательских функций.

+15
источник

Microsoft R Open включает многопоточные математические библиотеки для повышения производительности R.It работает в Windows/Unix/Mac для всех типов ОС. Он с открытым исходным кодом и может быть установлен в отдельный каталог, если у вас есть какая-либо существующая R (из CRAN). Вы можете использовать популярный IDE Rstudio также с этим. С самого начала R был разработан для использования только одного потока (процессора) за раз. Даже сегодня R работает таким образом, если не связан с многопоточными библиотеками BLAS/LAPACK.

Сегодня многоядерные машины предлагают параллельную вычислительную мощность. Чтобы воспользоваться этим, Microsoft R Open включает в себя многопоточные математические библиотеки. Эти библиотеки позволяют так много общих операций R, таких как матричное размножение/обратное, матричное декомпозиция и некоторые более высокоуровневые матричные операции, для параллельного вычисления и использования всей вычислительной мощности, доступной для уменьшения времени вычислений.

Пожалуйста, проверьте приведенную ниже ссылку:

https://mran.revolutionanalytics.com/rro/#about-rro

http://www.r-bloggers.com/using-microsoft-r-open-with-rstudio/

+9
источник

Как сказал Дэвид Хеффернан, взгляните на Blog of Revolution Analytics. Но вы должны знать, что большинство пакетов для Linux. Итак, если вы используете окна, это будет намного сложнее. В любом случае, взгляните на эти сайты:

Revolution. Здесь вы найдете лекцию о параллелизации в Р. Лекция на самом деле очень хорошая, но, как я уже сказал, большинство советов для Linux.

И эта тема здесь, в fooobar.com/questions/98670/..., будет оспаривать некоторую реализацию в Windows.

+4
источник

Пакет future делает работу в R чрезвычайно простой, используя параллельную и распределенную обработку. Подробнее здесь. Если вы хотите применить функцию к элементам параллельно, пакет future.apply предоставляет быстрый способ использования функций семейства "apply" (например, apply(), lapply() и vapply()) параллельно.

Пример:

library("future.apply")
library("stats")
x <- 1:10

# Single core
  y <- lapply(x, FUN = quantile, probs = 1:3/4)

# Multicore in parallel
  plan(multiprocess)
  y <- future_lapply(x, FUN = quantile, probs = 1:3/4)

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос