Programmering med Big Data i R

bdrp
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 ; 10 år sedan ( 2012-09 )
Förhandsgranska release
Maskinskrivningsdisciplin Dynamisk
OS Cross-plattform
Licens General Public License och Mozilla Public License
Hemsida www .r-pbd .org
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.

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
Bilderna beskriver hur olika pbdr-paket är korrelerade.

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

externa länkar