Пакет R, который автоматически использует несколько ядер? - PullRequest
60 голосов
/ 23 января 2011

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

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

Ответы [ 5 ]

48 голосов
/ 23 января 2011

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

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

32 голосов
/ 23 января 2011

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

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

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

[РЕДАКТИРОВАТЬ]

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

14 голосов
/ 24 января 2011

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

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

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

7 голосов
/ 06 февраля 2016

Microsoft R Open включает многопоточные математические библиотеки для повышения производительности R. Он работает в 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 /

3 голосов
/ 23 января 2011

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

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

И этот поток здесь, в Stackoverflow , будет обсуждатьсянекоторая реализация в Windows.

...