Программирование с большими данными в R

редактировать
pbdR
Paradigm SPMD и MPMD
Разработано Вэй-Чен Чен, Джордж Остроухов, Прагнешкумар Патель и Дрю Шмидт
Разработчик Основная команда pbdR
Впервые появилосьсентябрь 2012 г.; 8 лет назад (2012-09)
Предварительный выпуск Через GitHub в RBigData
Дисциплина ввода Динамический
OS Межплатформенный
Лицензия Стандартная общественная лицензия и Общественная лицензия Mozilla
Веб-сайтwww.r-pbd.org
Под влиянием
R, C, Fortran, MPI и ØMQ

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

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

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

Содержание
  • 1 Дизайн упаковки
  • 2 Примеры
    • 2.1 Пример 1
    • 2.2 Пример 2
    • 2.3 Пример 3
  • 3 Дополнительная литература
  • 4 Ссылки
  • 5 Внешние ссылки
Дизайн пакета

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

ОбщееI/OВычислениеПриложениеПрофилированиеКлиент / Сервер
pbdDEMOpbdNCDF4pbdDMATpmclustpbdPROFpbdZMQ
pbdMPIpbdADIOSpbdBASEpbdMLpbdPAPIremoter
pbdSLAPhpcvispbdCS
kazaampbdRPC
На изображениях описывается как соотносятся различные пакеты pbdr.

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

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

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

Примеры

Пример 1

Hello World! Сохраните следующий код в файле с именем "demo.r"

### Исходная библиотека MPI (pbdMPI, quiet = TRUE) init () comm.cat ("Hello World! \ N") ### Finish 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() ### Set a vector x on all processors with different values N <- 5 x <- (1:N) + N *.comm.rank ### All reduce x using summation operation y <- allreduce(as.integer(x), op = "sum") comm.print(y) y <- allreduce(as.double(x), op = "sum") comm.print(y) ### Finish 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 # blocking --- passing single value BL assumes BLxBL blocking dA <- ddmatrix("rnorm", nrow=M, ncol=N, mean=100, sd=10) # LA SVD svd1 <- La.svd(dA) comm.print(svd1$d) # Finish finalize()

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

mpiexec -np 2 Rscript demo.r

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

Дополнительная литература
Ссылки
Внешняя ссылка s
Последняя правка сделана 2021-06-02 07:49:54
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте