Content deleted Content added
m Link to model-based clustering article updated to link to main article |
|||
(107 intermediate revisions by 49 users not shown) | |||
Line 1:
{{multiple issues|
{{notability|date=June 2013}}
{{COI|date=June 2013}}
}}
{{Infobox programming language
| name =
| logo =
| paradigm = [[SPMD]] and [[MPMD]]
|
| designer =
| developer = pbdR Core Team
| latest_test_version = Through [[GitHub]] at [
| typing = [[dynamic typing|Dynamic]]
| influenced_by = [[R (programming language)|R]], [[C (programming language)|C]], [[
| operating_system = [[Cross-platform]]
| license = [[General Public License]] and [[Mozilla Public License]]
| website =
}}
'''Programming with Big Data in R''' (pbdR)<ref>{{cite web|author=Ostrouchov, G., Chen, W.-C., Schmidt, D., Patel, P.|title=Programming with Big Data in R|year=2012|url=http://r-pbd.org
* The pbdR built on [http://cran.r-project.org/package=pbdMPI pbdMPI] uses [[SPMD|SPMD Parallelism]] where every processors are considered as workers and own parts of data. This parallelism is particularly efficient in homogeneous computing environments for large data, for example, performing [[Singular value decomposition|singular value decomposition]] on a large matrix, or performing [[Mixture model|clustering analysis]] on high-dimensional large data. On the other hand, there is no restriction to use [[Master/slave (technology)|manager/workers parallelism]] in [[SPMD|SPMD parallelism]] environment.▼
* The [http://cran.r-project.org/package=Rmpi Rmpi]<ref name=rmpi/> uses [[Master/slave (technology)|manager/workers parallelism]] where one main processor (manager) servers as the control of all other processors (workers). This parallelism is particularly efficient for large tasks in small [[Computer cluster|clusters]], for example, [[Bootstrapping (statistics)|bootstrap method]] and [[Monte Carlo method|Monte Carlo simulation]] in applied statistics since [[Independent and identically distributed random variables|i.i.d.]] assumption is commonly used in most [[Statistics|statistical analysis]]. In particular, [http://math.acadiau.ca/ACMMaC/Rmpi/structure.html|task pull] parallelism has better performance for Rmpi in heterogeneous computing environments.▼
== Package design ==▼
▲* The pbdR built on
Programming with pbdR requires usage of various packages developed by pbdR core team.▼
▲* The
The idea of [[SPMD|SPMD parallelism]] is to let every processor do the same amount of work, but on different parts of a large data set. For example, a modern [[Graphics processing unit|GPU]] is a large collection of slower co-processors that can simply apply the same computation on different parts of relatively smaller data, but the SPMD parallelism ends up with an efficient way to obtain final solutions (i.e. time to solution is shorter).<ref>{{cite web | url = http://graphics.stanford.edu/~mhouston/ | title = Folding@Home - GPGPU | author = Mike Houston | access-date = 2007-10-04 }}</ref>
▲== Package design ==
▲Programming with pbdR requires usage of various packages developed by pbdR core team. Packages developed are the following.
{| class="wikitable"
|-
! General !! I/O !! Computation !! Application !! Profiling !! Client/Server
|-
| pbdDEMO || pbdNCDF4 || pbdDMAT || pmclust || pbdPROF || pbdZMQ
|-
| pbdMPI || pbdADIOS || pbdBASE ||
|-
| ||
|-
| || || kazaam || || || pbdRPC
|}
[[File:Pbd overview.png|thumb|The images describes how various pbdr packages are correlated.]]
Among these packages, pbdMPI provides wrapper functions to [[Message Passing Interface|MPI]] library, and it also produces a [[Library (computing)|shared library]] and a configuration file for MPI environments. All other packages rely on this configuration for installation and library loading that avoids difficulty of library linking and compiling. All other packages can directly use MPI functions easily.
* pbdMPI --- an efficient interface to
* pbdSLAP --- bundles scalable dense linear algebra libraries in double precision for R, based on [[ScaLAPACK]] version 2.0.2
* pbdNCDF4 --- interface to Parallel Unidata [[NetCDF]]4 format data files
▲* pbdSLAP --- bundles scalable dense linear algebra libraries in double precision for R, based on [[ScaLAPACK]] version 2.0.2<ref>{{cite book|title=ScaLAPACK Users' Guide|author=Blackford, L.S., et.al.|year=1997|url=http://netlib.org/scalapack/slug/scalapack_slug.html/}}</ref> which includes several scalable linear algebra packages (namely [[BLACS]], [[PBLAS]], and [[ScaLAPACK]]).<ref>{{cite web|title=PBLAS|url=http://www.netlib.org/utk/papers/scalapack/node9.html|work=Netlib|first=Antoine |last=Petitet
* pbdBASE --- low-level [[ScaLAPACK]] codes and wrappers
* pbdDMAT --- distributed matrix classes and computational methods, with a focus on linear algebra and statistics
* pbdDEMO --- set of package demonstrations and examples, and this unifying vignette
* pmclust --- parallel [[
* pbdPROF --- profiling package for MPI codes and visualization of parsed stats
* pbdZMQ --- interface to [[ZeroMQ|ØMQ]]
* remoter --- R client with remote R servers
* pbdCS --- pbdR client with remote pbdR servers
* pbdRPC --- remote procedure call
* kazaam --- very tall and skinny distributed matrices
* pbdML --- machine learning toolbox
== Examples ==
=== Example 1 ===
Hello World! Save the following code in a file called
<
### Initial MPI
library(pbdMPI, quiet = TRUE)
Line 64 ⟶ 72:
### Finish
finalize()
</syntaxhighlight>
and use the command
<
mpiexec -np 2 Rscript demo.r
</syntaxhighlight>
to execute the code where [[R (programming language)|Rscript]] is one of command line executable program.
=== Example 2 ===
The following example modified from pbdMPI illustrates the basic [[programming language syntax|syntax of the language]] of pbdR.
Since pbdR is designed in [[SPMD]], all the R scripts are stored in files and executed from the command line via
<
### Initial MPI
library(pbdMPI, quiet = TRUE)
Line 93 ⟶ 101:
### Finish
finalize()
</syntaxhighlight>
and use the command
<
mpiexec -np 4 Rscript demo.r
</syntaxhighlight>
to execute the code where [[R (programming language)|Rscript]] is one of command line executable program.
=== Example 3 ===
The following example modified from pbdDEMO illustrates the basic ddmatrix computation of pbdR which performs [[
Save the following code in a file called
<
# Initialize process grid
library(pbdDMAT, quiet=T)
Line 122 ⟶ 130:
# Finish
finalize()
</syntaxhighlight>
and use the command
<
mpiexec -np 2 Rscript demo.r
</syntaxhighlight>
to execute the code where [[R (programming language)|Rscript]] is one of command line executable program.
== Further reading ==
*
* {{cite tech report|author=Bachmann, M.G., Dyas, A.D., Kilmer, S.C. and Sass, J.|year=2013|title=Block Cyclic Distribution of Data in pbdR and its Effects on Computational Efficiency|institution=UMBC High Performance Computing Facility, University of Maryland, Baltimore County|number=HPCF-2013-11|url=http://userpages.umbc.edu/~gobbert/papers/REU2013Team1.pdf|accessdate=2014-02-01|archiveurl=https://web.archive.org/web/20140204051351/http://userpages.umbc.edu/~gobbert/papers/REU2013Team1.pdf|archivedate=2014-02-04|url-status=dead}}
* [http://cran.r-project.org/ CRAN] Task View: [http://cran.r-project.org/web/views/HighPerformanceComputing.html High-Performance and Parallel Computing with R].<ref>{{cite web|title=High-Performance and Parallel Computing with R|author=Dirk Eddelbuettel|url=http://cran.r-project.org/web/views/HighPerformanceComputing.html}}</ref>▼
* {{cite tech report|author=Bailey, W.J., Chambless, C.A., Cho, B.M. and Smith, J.D.|year=2013|title=Identifying Nonlinear Correlations in High Dimensional Data with Application to Protein Molecular Dynamics Simulations|institution=UMBC High Performance Computing Facility, University of Maryland, Baltimore County|number=HPCF-2013-12|url=http://userpages.umbc.edu/~gobbert/papers/REU2013Team2.pdf|accessdate=2014-02-01|archiveurl=https://web.archive.org/web/20140204055902/http://userpages.umbc.edu/~gobbert/papers/REU2013Team2.pdf|archivedate=2014-02-04|url-status=dead}}
* [http://www.r-bloggers.com/r-at-12000-cores/ R at 12,000 Cores].<ref>{{cite news|title=R at 12,000 Cores|url=http://www.r-bloggers.com/r-at-12000-cores/}}</ref> This article was read 22,584 times in 2012 since it posted on October 16, 2012 and ranked number 3 according to [http://www.r-bloggers.com/100-most-read-r-posts-for-2012-stats-from-r-bloggers-big-data-visualization-data-manipulation-and-other-languages/|Top 100 R posts of 2012]<ref>{{cite news|url=http://www.r-bloggers.com/100-most-read-r-posts-for-2012-stats-from-r-bloggers-big-data-visualization-data-manipulation-and-other-languages/|title=100 most read R posts in 2012 (stats from R-bloggers) – big data, visualization, data manipulation, and other languages}}</ref>▼
▲*
▲*
== External links ==▼
* {{cite web|url=http://rwiki.sciviews.org/doku.php?id=developers:projects:gsoc2013:mpiprofiler|archive-url=https://archive.today/20130629095333/http://rwiki.sciviews.org/doku.php?id=developers:projects:gsoc2013:mpiprofiler|url-status=dead|archive-date=2013-06-29|title=Profiling Tools for Parallel Computing with R|author=Google Summer of Code - R 2013}}
* {{Official website|r-pbd.org}} of the pbdR project▼
* {{cite web|url=http://rpubs.com/wush978/pbdMPI-linux-pilot|title=在雲端運算環境使用R和MPI|author=Wush Wu (2014)}}
* {{cite web|url=https://www.youtube.com/watch?v=m1vtPESsFqM|title=快速在AWS建立R和pbdMPI的使用環境|author=Wush Wu (2013)|website=[[YouTube]] }}
▲* Version 0.1-0: Migrate from [http://cran.r-project.org/package=Rmpi Rmpi]<ref name=rmpi>{{cite journal|author=Yu, H.|title=Rmpi: Parallel Statistical Computing in R|year=2002|url=http://cran.r-project.org/package=Rmpi|journal=R News}}</ref> to pbdMPI.
== References ==
{{Reflist|30em}}
▲== External links ==
{{DEFAULTSORT:PbdR}}
[[Category:Parallel computing]]▼
[[Category:Cross-platform free software]]
[[Category:
[[Category:Data-centric programming languages]]
[[Category:Statistical software]]▼
[[Category:Free statistical software]]
[[Category:
[[Category:
[[Category:Numerical analysis software for Windows]]
▲[[Category:Parallel computing]]
|