Programmering med Big Data i R
Paradigm | SPMD och MPMD |
---|---|
Designad av | Wei-Chen Chen, George Ostrouchov, Pragneshkumar Patel och Drew Schmidt |
Utvecklare | pbdR kärnteam |
Dök först upp | september 2012 |
Förhandsgranska release | |
Maskinskrivningsdisciplin | Dynamisk |
OS | Cross-plattform |
Licens | General Public License och Mozilla Public License |
Hemsida | |
Influerad av | |
R , C , Fortran , MPI och ØMQ |
Programmering med Big Data i R ( pbdR) är en serie R- paket och en miljö för statistisk beräkning med stordata genom att använda högpresterande statistisk beräkning. PbdR använder samma programmeringsspråk som R med S3/S4 klasser och metoder som används bland statistiker och data miners för att utveckla statistisk programvara . Den betydande skillnaden mellan pbdR och R-kod är att pbdR främst fokuserar på distribuerade minnessystem , där data distribueras över flera processorer och analyseras i ett batch-läge , medan kommunikation mellan processorer är baserad på MPI som lätt kan användas i stora högpresterande beräkningar (HPC) system. R-systemet fokuserar huvudsakligen [ citat behövs ] på enstaka flerkärniga maskiner för dataanalys via ett interaktivt läge som GUI-gränssnitt .
Två huvudsakliga implementeringar i R med MPI är Rmpi och pbdMPI av pbdR.
- PbdR byggd på pbdMPI använder SPMD-parallellism där varje processor betraktas som arbetare och äger delar av data. SPMD -parallellismen som introducerades i mitten av 1980 är särskilt effektiv i homogena datormiljöer för stora data, till exempel genom att utföra singulärvärdesuppdelning på en stor matris eller utföra klustringsanalys på högdimensionell stor data. Å andra sidan finns det ingen begränsning för att använda chef/arbetare-parallellism i SPMD-parallellismmiljö .
- Rmpi använder chef/arbetare parallellism där en huvudprocessor (manager) fungerar som kontroll över alla andra processorer (arbetare). Den parallellitet mellan chefer och arbetare som introducerades i början av 2000 är särskilt effektiv för stora uppgifter i små kluster , till exempel bootstrap-metoden och Monte Carlo-simulering i tillämpad statistik eftersom iid- antaganden är vanligt förekommande i de flesta statistiska analyser . Speciellt, task pull-parallellism har bättre prestanda för Rmpi i heterogena datormiljöer.
Tanken med SPMD-parallellism är att låta varje processor göra samma mängd arbete, men på olika delar av en stor datamängd. Till exempel är en modern GPU en stor samling långsammare samprocessorer som helt enkelt kan tillämpa samma beräkning på olika delar av relativt mindre data, men SPMD-parallellen slutar med ett effektivt sätt att få slutliga lösningar (dvs. tiden till lösning är kortare).
Paketdesign
Programmering med pbdR kräver användning av olika paket utvecklade av pbdR:s kärnteam. Utvecklade paket är följande.
Allmän | I/O | Beräkning | Ansökan | Profilering | Klient-server |
---|---|---|---|---|---|
pbdDEMO | pbdNCDF4 | pbdDMAT | pmclust | pbdPROF | pbdZMQ |
pbdMPI | pbdADIOS | pbdBASE | pbdML | pbdPAPI | fjärrkontroll |
pbdSLAP | hpcvis | pbdCS | |||
kazaam | pbdRPC |
Bland dessa paket tillhandahåller pbdMPI omslagsfunktioner till MPI- biblioteket, och det producerar också ett delat bibliotek och en konfigurationsfil för MPI-miljöer. Alla andra paket förlitar sig på denna konfiguration för installation och biblioteksladdning som undviker svårigheter med bibliotekslänkning och kompilering. Alla andra paket kan enkelt använda MPI-funktioner direkt.
- pbdMPI --- ett effektivt gränssnitt till MPI antingen OpenMPI eller MPICH2 med fokus på Single Program/Multiple Data ( SPMD ) parallell programmeringsstil
- pbdSLAP --- paketerar skalbara täta linjära algebrabibliotek i dubbel precision för R, baserat på ScaLAPACK version 2.0.2 som inkluderar flera skalbara linjära algebrapaket (nämligen BLACS, PBLAS och ScaLAPACK ).
- pbdNCDF4 --- gränssnitt till Parallel Unidata NetCDF 4-format datafiler
- ScaLAPACK- koder och omslag på låg nivå
- pbdDMAT --- distribuerade matrisklasser och beräkningsmetoder, med fokus på linjär algebra och statistik
- pbdDEMO --- uppsättning paketdemonstrationer och exempel, och denna förenande vinjett
- pmclust --- parallell modellbaserad klustring med pbdR
- pbdPROF --- profileringspaket för MPI-koder och visualisering av analyserad statistik
- pbdZMQ --- gränssnitt till ØMQ
- remoter --- R-klient med fjärr-R-servrar
- pbdCS --- pbdR-klient med fjärranslutna pbdR-servrar
- pbdRPC --- fjärrproceduranrop
- kazaam --- mycket långa och magra fördelade matriser
- pbdML --- verktygslåda för maskininlärning
Bland dessa paket är pbdDEMO-paketet en samling av 20+ paketdemos som erbjuder exempel på användningar av de olika pbdR-paketen, och innehåller en vinjett som ger detaljerade förklaringar till demos och ger viss matematisk eller statistisk insikt.
Exempel
Exempel 1
Hej världen! Spara följande kod i en fil som heter "demo.r"
### Initialt MPI- bibliotek ( pbdMPI , quiet = TRUE ) init () comm.cat ( "Hej världen!\n" ) ### Slutför slutför ()
och använd kommandot
mpiexec -np 2 Rscript demo.r
för att köra koden där Rscript är ett av kommandoradens körbara program.
Exempel 2
Följande exempel modifierat från pbdMPI illustrerar den grundläggande syntaxen för språket för pbdR. Eftersom pbdR är designad i SPMD , lagras alla R-skript i filer och exekveras från kommandoraden via mpiexec, mpirun, etc. Spara följande kod i en fil som heter "demo.r"
### Initialt MPI- bibliotek ( pbdMPI , tyst = TRUE ) init () .comm.size <- comm.size () .comm.rank <- comm.rank () ### Ställ in en vektor x på alla processorer med olika värden N <- 5 x <- ( 1 : N ) + N * .comm.rank ### Alla reducera x med summeringsoperation y <- allreduce ( as.integer ( x ), op = "summa" ) comm.print ( y ) y <- allreduce ( as.double ( x ), op = "summa" ) comm.print ( y ) ### Slutför finalize ()
och använd kommandot
mpiexec -np 4 Rscript demo.r
för att köra koden där Rscript är ett av kommandoradens körbara program.
Exempel 3
Följande exempel modifierat från pbdDEMO illustrerar den grundläggande ddmatrisberäkningen av pbdR som utför singulärvärdesuppdelning på en given matris. Spara följande kod i en fil som heter "demo.r"
# Initialisera processgridbiblioteket ( pbdDMAT , tyst = T ) if ( comm.size ( ) != 2 ) comm.stop ( "Exakt 2 processorer krävs för den här demon." ) init.grid ( ) # Inställning för resten av comm .set.seed ( diff = TRUE ) M <- N <- 16 BL <- 2 # blockering --- passerar ett enda värde BL antar att BLxBL blockerar dA <- ddmatrix ( "rnorm" , nrow = M , ncol = N , medelvärde = 100 , sd = 10 ) # LA SVD svd1 <- La.svd ( dA ) comm.print ( svd1 $ d ) # Finish finalize ( )
och använd kommandot
mpiexec -np 2 Rscript demo.r
för att köra koden där Rscript är ett av kommandoradens körbara program.
Vidare läsning
- Raim, AM (2013). Introduktion till distribuerad datoranvändning med pbdR vid UMBC High Performance Computing Facility (PDF) (Teknisk rapport). UMBC High Performance Computing Facility, University of Maryland, Baltimore County. HPCF-2013-2. Arkiverad från originalet (PDF) 2014-02-04 . Hämtad 2013-06-26 .
-
Bachmann, MG, Dyas, AD, Kilmer, SC och Sass, J. (2013). Blockera cyklisk distribution av data i pbdR och dess effekter på beräkningseffektivitet ( PDF) (Teknisk rapport). UMBC High Performance Computing Facility, University of Maryland, Baltimore County. HPCF-2013-11. Arkiverad från originalet (PDF) 2014-02-04 . Hämtad 2014-02-01 .
{{ cite techreport }}
: CS1 underhåll: flera namn: lista över författare ( länk ) -
Bailey, WJ, Chambless, CA, Cho, BM och Smith, JD (2013). Identifiera icke-linjära korrelationer i högdimensionella data med tillämpning på proteinmolekylära dynamiksimuleringar ( PDF) (Teknisk rapport). UMBC High Performance Computing Facility, University of Maryland, Baltimore County. HPCF-2013-12. Arkiverad från originalet (PDF) 2014-02-04 . Hämtad 2014-02-01 .
{{ cite techreport }}
: CS1 underhåll: flera namn: lista över författare ( länk ) - Dirk Eddelbuettel (13 november 2022). "Högpresterande och parallell beräkning med R" .
-
"R vid 12 000 kärnor" . Den här artikeln lästes 22 584 gånger under 2012 sedan den publicerades den 16 oktober 2012 och rankades som nummer 3 -
Google Summer of Code - R 2013. "Profiling Tools for Parallel Computing with R" . Arkiverad från originalet 2013-06-29.
{{ citera webben }}
:|author=
har ett generiskt namn ( hjälp ) - Wush Wu (2014). "在雲端運算環境使用R和MPI" .
- Wush Wu (2013). "快速在AWS建立R和pbdMPI的使用環境" . YouTube .
externa länkar
- Gratis programvara för flera plattformar
- Datacentrerade programmeringsspråk
- Programvara för datautvinning och maskininlärning
- Gratis statistisk programvara
- Funktionella språk
- Programvara för numerisk analys för Linux
- Programvara för numerisk analys för Windows
- Programvara för numerisk analys för macOS
- Parallell beräkning