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 дает эффективный способ получения окончательных решений. (т.е. время до растворения короче).
Программирование с помощью pbdR требует использования различных пакетов, разработанных основной командой pbdR. Разработаны следующие пакеты.
Общее | I/O | Вычисление | Приложение | Профилирование | Клиент / Сервер |
---|---|---|---|---|---|
pbdDEMO | pbdNCDF4 | pbdDMAT | pmclust | pbdPROF | pbdZMQ |
pbdMPI | pbdADIOS | pbdBASE | pbdML | pbdPAPI | remoter |
pbdSLAP | hpcvis | pbdCS | |||
kazaam | pbdRPC |
Среди этих пакетов pbdMPI предоставляет функции оболочки для библиотеки MPI, а также создает разделяемую библиотеку и файл конфигурации для сред MPI. Все остальные пакеты полагаются на эту конфигурацию для установки и загрузки библиотеки, что позволяет избежать трудностей при компоновке и компиляции библиотеки. Все остальные пакеты могут легко напрямую использовать функции MPI.
Среди этих пакетов пакет pbdDEMO представляет собой набор из 20+ демонстрационных пакетов, которые предлагают примеры использования различных пакетов pbdR и содержат виньетку, которая предлагает подробные объяснения демонстраций. и дает некоторые математические или статистические данные.
Hello World! Сохраните следующий код в файле с именем "demo.r"
### Исходная библиотека MPI (pbdMPI, quiet = TRUE) init () comm.cat ("Hello World! \ N") ### Finish finalize ()
и используйте команду
mpiexec -np 2 Rscript demo.r
для выполнения кода, где Rscript - это одна из исполняемых программ командной строки.
Следующий пример, измененный на основе 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 - одна из исполняемых программ командной строки.
Следующий пример, измененный на основе 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 - одна из исполняемых программ командной строки.