Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
Парадигма | СПМД и МПМД |
---|---|
Разработано | Вэй-Чен Чен, Джордж Остроухов, Прагнешкумар Патель и Дрю Шмидт |
Разработчик | Основная команда pbdR |
Впервые появился | Сентябрь 2012 г . |
Предварительный выпуск | |
Печатная дисциплина | Динамический |
Операционные системы | Кроссплатформенность |
Лицензия | Стандартная общественная лицензия и общественная лицензия Mozilla |
Веб-сайт | www |
Под влиянием | |
R , C , Фортран , MPI и ØMQ |
Программирование с использованием больших данных в 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. Разработаны следующие пакеты.
Общий | Ввод / вывод | Вычисление | Заявление | Профилирование | Клиент / Сервер |
---|---|---|---|---|---|
pbdDEMO | pbdNCDF4 | pbdDMAT | pmclust | pbdPROF | pbdZMQ |
pbdMPI | pbdADIOS | pbdBASE | pbdML | pbdPAPI | более удаленный |
pbdSLAP | hpcvis | pbdCS | |||
казаам | pbdRPC |
Среди этих пакетов 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 的 使用 環境" .
Ссылки [ править ]
- ^ Ostrouchov Г., Чен, W.-C., Шмидт, Д. Пател, P. (2012). «Программирование с большими данными в R» .CS1 maint: multiple names: authors list (link)
- ^ Чен, W.-C. & Остроухов, Г. (2011). «HPSC - высокопроизводительные статистические вычисления для интенсивных исследований данных» . Архивировано из оригинала на 2013-07-19 . Проверено 25 июня 2013 .
- ^ а б Ю, Х. (2002). «Rmpi: параллельные статистические вычисления в R» . R News .
- ^ Майк Хьюстон. «Folding @ Home - GPGPU» . Проверено 4 октября 2007 .
- ^ «100 самых читаемых сообщений R в 2012 году (статистика от R-блоггеров) - большие данные, визуализация, манипулирование данными и другие языки» .
Внешние ссылки [ править ]
- Официальный веб-сайт