Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Программирование с использованием больших данных в R (pbdR) [1] - это серия пакетов R и среда для статистических вычислений с большими данными с использованием высокопроизводительных статистических вычислений. [2] pbdR использует тот же язык программирования, что и R, с классами и методами S3 / S4, который используется статистиками и разработчиками данных для разработки статистического программного обеспечения . Существенная разница между кодом pbdR и R заключается в том, что pbdR в основном ориентирован на системы с распределенной памятью , где данные распределяются между несколькими процессорами и анализируются в пакетном режиме., в то время как связь между процессорами основана на MPI, который легко используется в больших системах высокопроизводительных вычислений (HPC) . R Система ориентирована главным образом [ править ] на отдельных многоядерные машинах для анализа данных через интерактивный режим , такие как интерфейс GUI .

Две основные реализации в R с использованием MPI - это Rmpi [3] и pbdMPI для pbdR.

  • PbdR, построенный на pbdMPI, использует параллелизм SPMD, в котором каждый процессор рассматривается как рабочий и владеет частями данных. СПМД параллелизм представлен в середине 1980 особенно эффективен в однородных вычислительных средах для больших объемов данных, например, выполняя разложение по сингулярным значениям на большой матрицы, или при выполнении кластеризации анализ на высокой размерности больших объемов данных. С другой стороны, нет никаких ограничений на использование параллелизма менеджер / рабочие в среде параллелизма SPMD .
  • Rmpi [3] использует параллелизм менеджер / рабочие, где один главный процессор (менеджер) служит для управления всеми остальными процессорами (рабочими). Менеджер / рабочие параллелизм введены около начале 2000 особенно эффективен для больших задач в малых кластеров , например, метод начальной загрузки и моделирования методом Монте - Карло в прикладной статистики , поскольку н.о.р. предположение обычно используется в большинстве статистического анализа . В частности, вытягивающий параллелизм задач имеет лучшую производительность для Rmpi ​​в гетерогенных вычислительных средах.

Идея параллелизма SPMD состоит в том, чтобы позволить каждому процессору выполнять одинаковый объем работы, но с разными частями большого набора данных. Например, современный графический процессор - это большой набор более медленных сопроцессоров, которые могут просто применять одни и те же вычисления к различным частям относительно небольших данных, но параллелизм SPMD дает эффективный способ получения окончательных решений (т.е. время до решения составляет короче). [4]

Дизайн упаковки [ править ]

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

На изображениях показано, как соотносятся различные пакеты pbdr.

Среди этих пакетов pbdMPI предоставляет функции оболочки для библиотеки MPI , а также создает общую библиотеку и файл конфигурации для сред MPI. Все остальные пакеты полагаются на эту конфигурацию для установки и загрузки библиотеки, что позволяет избежать трудностей при компоновке и компиляции библиотеки. Все остальные пакеты могут легко напрямую использовать функции MPI.

  • pbdMPI --- эффективный интерфейс для MPI либо OpenMPI, либо MPICH2 с упором на стиль параллельного программирования с одной программой / несколькими данными ( SPMD )
  • pbdSLAP --- объединяет библиотеки масштабируемой плотной линейной алгебры с двойной точностью для R на основе ScaLAPACK версии 2.0.2, которая включает несколько пакетов масштабируемой линейной алгебры (а именно BLACS , PBLAS и ScaLAPACK ).
  • pbdNCDF4 --- интерфейс для файлов данных формата Parallel Unidata NetCDF 4
  • pbdBASE --- низкоуровневые коды и оболочки ScaLAPACK
  • pbdDMAT --- классы распределенных матриц и вычислительные методы с упором на линейную алгебру и статистику
  • pbdDEMO --- набор демонстраций пакетов и примеров, и эта объединяющая виньетка
  • pmclust --- кластеризация на основе параллельной модели с использованием pbdR
  • pbdPROF --- пакет профилирования для кодов MPI и визуализация проанализированной статистики
  • pbdZMQ --- интерфейс для ØMQ
  • удаленный --- клиент R с удаленными серверами R
  • pbdCS --- клиент pbdR с удаленными серверами pbdR
  • pbdRPC --- удаленный вызов процедуры
  • kazaam --- очень высокие и тонкие распределенные матрицы
  • pbdML --- набор инструментов для машинного обучения

Среди этих пакетов пакет pbdDEMO представляет собой набор из более чем 20 демонстраций пакетов, которые предлагают примеры использования различных пакетов pbdR и содержат виньетку, которая предлагает подробные объяснения демонстраций и дает некоторые математические или статистические сведения.

Примеры [ править ]

Пример 1 [ править ]

Привет мир! Сохраните следующий код в файле под названием «demo.r».

### Исходная библиотека MPI ( pbdMPI ,  quiet  =  TRUE ) init ()comm.cat ( "Привет, мир! \ n" )### Завершить finalize ()

и используйте команду

mpiexec -np 2 Rscript demo.r

для выполнения кода, где Rscript - одна из исполняемых программ командной строки.

Пример 2 [ править ]

Следующий пример, измененный на основе pbdMPI, иллюстрирует основной синтаксис языка pbdR. Поскольку pbdR разработан в SPMD , все сценарии R хранятся в файлах и выполняются из командной строки через mpiexec, mpirun и т. Д. Сохраните следующий код в файле с именем "demo.r"

### Исходная библиотека MPI ( pbdMPI ,  quiet  =  TRUE ) init () .comm.size  <-  comm.size () .comm.rank  <-  comm.rank ()### Установить вектор x на всех процессорах с разными значениями N  <-  5 x  <-  ( 1 : N )  +  N  *  .comm.rank### Все уменьшают x, используя операцию суммирования y  <-  allreduce ( as.integer ( x ),  op  =  "sum" ) comm.print ( y ) y  <-  allreduce ( as.double ( x ),  op  =  "sum" ) comm.print ( y )### Завершить finalize ()

и используйте команду

mpiexec -np 4 Rscript demo.r

для выполнения кода, где Rscript - одна из исполняемых программ командной строки.

Пример 3 [ править ]

Следующий пример, измененный из pbdDEMO, иллюстрирует базовое вычисление ddmatrix для pbdR, которое выполняет разложение по сингулярным значениям для данной матрицы. Сохраните следующий код в файле под названием «demo.r».

# Инициализировать библиотеку сетки процессов ( pbdDMAT ,  quiet = T ) if ( comm.size ()  ! =  2 )  comm.stop ( "Для этой демонстрации требуется ровно 2 процессора." ) Init.grid ()# Настройка остатка comm.set.seed ( diff = TRUE ) M  <-  N  <-  16 BL  <-  2  # блокировка --- передача одиночного значения BL предполагает блокировку BLxBL dA  <-  ddmatrix ( "rnorm" ,  nrow = M ,  ncol = N ,  среднее = 100 ,  sd = 10 )# LA SVD svd1  <-  La.svd ( dA ) comm.print ( svd1 $ d )# Завершить finalize ()

и используйте команду

mpiexec -np 2 Rscript demo.r

для выполнения кода, где Rscript - одна из исполняемых программ командной строки.

Дальнейшее чтение [ править ]

  • Раим, AM (2013). Введение в распределенные вычисления с pbdR в UMBC High Performance Computing Facility (PDF) (технический отчет). UMBC High Performance Computing Facility, Университет Мэриленда, округ Балтимор. HPCF-2013-2. Архивировано из оригинального (PDF) 04.02.2014 . Проверено 26 июня 2013 . CS1 maint: discouraged parameter (link)
  • Бахманн, М.Г., Дьяс, А.Д., Килмер, С.К. и Сасс, Дж. (2013). Блок-циклическое распределение данных в pbdR и его влияние на вычислительную эффективность (PDF) (Технический отчет). UMBC High Performance Computing Facility, Университет Мэриленда, округ Балтимор. HPCF-2013-11. Архивировано из оригинального (PDF) 04.02.2014 . Проверено 1 февраля 2014 . CS1 maint: discouraged parameter (link) CS1 maint: multiple names: authors list (link)
  • Бейли, У. Дж., Чемблесс, Калифорния, Чо, Б. М. и Смит, Дж. Д. (2013). Выявление нелинейных корреляций в данных большой размерности с применением к моделированию молекулярной динамики белков (PDF) (Технический отчет). UMBC High Performance Computing Facility, Университет Мэриленда, округ Балтимор. HPCF-2013-12. Архивировано из оригинального (PDF) 04.02.2014 . Проверено 1 февраля 2014 . CS1 maint: discouraged parameter (link) CS1 maint: multiple names: authors list (link)
  • Дирк Эддельбюттель . «Высокопроизводительные параллельные вычисления с R» .
  • «R на 12 000 ядер» .
    Эту статью прочитали 22 584 раза в 2012 г. с тех пор, как она была опубликована 16 октября 2012 г. и заняла 3-е место [5]
  • Google Summer of Code - R 2013. «Инструменты профилирования для параллельных вычислений с R» . Архивировано из оригинала на 2013-06-29.
  • Уш Ву (2014). «雲端 運算 環境 使用 R 和 MPI» .
  • Уш Ву (2013). "在 AWS 建立 R 和 pbdMPI 的 使用 環境" .

Ссылки [ править ]

  1. ^ Ostrouchov Г., Чен, W.-C., Шмидт, Д. Пател, P. (2012). «Программирование с большими данными в R» .CS1 maint: multiple names: authors list (link)
  2. ^ Чен, W.-C. & Остроухов, Г. (2011). «HPSC - высокопроизводительные статистические вычисления для интенсивных исследований данных» . Архивировано из оригинала на 2013-07-19 . Проверено 25 июня 2013 .
  3. ^ а б Ю, Х. (2002). «Rmpi: параллельные статистические вычисления в R» . R News .
  4. ^ Майк Хьюстон. «Folding @ Home - GPGPU» . Проверено 4 октября 2007 .
  5. ^ «100 самых читаемых сообщений R в 2012 году (статистика от R-блоггеров) - большие данные, визуализация, манипулирование данными и другие языки» .

Внешние ссылки [ править ]

  • Официальный веб-сайт