Programming with Big Data in R
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
Developer | pbdR Core Team |
---|---|
First appeared | September 2012 |
Preview release | |
General Public License and Mozilla Public License | |
Website | www |
Influenced by | |
R, C, Fortran, MPI, and ØMQ |
Programming with Big Data in R (pbdR)
Two main implementations in R using MPI are Rmpi[4] and pbdMPI of pbdR.
- The pbdR built on pbdMPI uses SPMD parallelismenvironment.
- The Rmpimanager/workers parallelism introduced around early 2000 is particularly efficient for large tasks in small clusters, for example, bootstrap method and Monte Carlo simulation in applied statistics since i.i.d. assumption is commonly used in most statistical analysis. In particular, task pull parallelism has better performance for Rmpi in heterogeneous computing environments.
The idea of
Package design
Programming with pbdR requires usage of various packages developed by pbdR core team. Packages developed are the following.
General | I/O | Computation | Application | Profiling | Client/Server |
---|---|---|---|---|---|
pbdDEMO | pbdNCDF4 | pbdDMAT | pmclust | pbdPROF | pbdZMQ |
pbdMPI | pbdADIOS | pbdBASE | pbdML | pbdPAPI | remoter |
pbdSLAP | hpcvis | pbdCS | |||
kazaam | pbdRPC |
Among these packages, pbdMPI provides wrapper functions to MPI library, and it also produces a 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 MPI either SPMD) parallel programming style
- pbdSLAP --- bundles scalable dense linear algebra libraries in double precision for R, based on ScaLAPACK version 2.0.2 which includes several scalable linear algebra packages (namely BLACS, PBLAS, and ScaLAPACK).
- pbdNCDF4 --- interface to Parallel Unidata NetCDF4 format data files
- 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 model-based clustering using pbdR
- pbdPROF --- profiling package for MPI codes and visualization of parsed stats
- pbdZMQ --- interface to Ø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
Among those packages, the pbdDEMO package is a collection of 20+ package demos which offer example uses of the various pbdR packages, and contains a vignette that offers detailed explanations for the demos and provides some mathematical or statistical insight.
Examples
Example 1
Hello World! Save the following code in a file called "demo.r"
### Initial MPI
library(pbdMPI, quiet = TRUE)
init()
comm.cat("Hello World!\n")
### Finish
finalize()
and use the command
mpiexec -np 2 Rscript demo.r
to execute the code where Rscript is one of command line executable program.
Example 2
The following example modified from pbdMPI illustrates the basic
### Initial MPI
library(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()
and use the command
mpiexec -np 4 Rscript demo.r
to execute the code where 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 singular value decomposition on a given matrix. Save the following code in a file called "demo.r"
# Initialize process grid
library(pbdDMAT, quiet=T)
if(comm.size() != 2)
comm.stop("Exactly 2 processors are required for this demo.")
init.grid()
# Setup for the remainder
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()
and use the command
mpiexec -np 2 Rscript demo.r
to execute the code where Rscript is one of command line executable program.
Further reading
- Raim, A.M. (2013). Introduction to distributed computing with pbdR at the UMBC High Performance Computing Facility (PDF) (Technical report). UMBC High Performance Computing Facility, University of Maryland, Baltimore County. HPCF-2013-2. Archived from the original (PDF) on 2014-02-04. Retrieved 2013-06-26.
- Bachmann, M.G., Dyas, A.D., Kilmer, S.C. and Sass, J. (2013). Block Cyclic Distribution of Data in pbdR and its Effects on Computational Efficiency (PDF) (Technical report). UMBC High Performance Computing Facility, University of Maryland, Baltimore County. HPCF-2013-11. Archived from the original (PDF) on 2014-02-04. Retrieved 2014-02-01.
{{cite tech report}}
: CS1 maint: multiple names: authors list (link) - Bailey, W.J., Chambless, C.A., Cho, B.M. and Smith, J.D. (2013). Identifying Nonlinear Correlations in High Dimensional Data with Application to Protein Molecular Dynamics Simulations (PDF) (Technical report). UMBC High Performance Computing Facility, University of Maryland, Baltimore County. HPCF-2013-12. Archived from the original (PDF) on 2014-02-04. Retrieved 2014-02-01.
{{cite tech report}}
: CS1 maint: multiple names: authors list (link) - Dirk Eddelbuettel (13 November 2022). "High-Performance and Parallel Computing with R".
- "R at 12,000 Cores".
This article was read 22,584 times in 2012 since it posted on October 16, 2012, and ranked number 3[6] - Google Summer of Code - R 2013. "Profiling Tools for Parallel Computing with R". Archived from the original on 2013-06-29.
{{cite web}}
:|author=
has generic name (help)CS1 maint: numeric names: authors list (link) - Wush Wu (2014). "在雲端運算環境使用R和MPI".
{{cite web}}
: CS1 maint: numeric names: authors list (link) - Wush Wu (2013). "快速在AWS建立R和pbdMPI的使用環境". YouTube.
{{cite web}}
: CS1 maint: numeric names: authors list (link)
References
- ^ Ostrouchov, G., Chen, W.-C., Schmidt, D., Patel, P. (2012). "Programming with Big Data in R".
{{cite web}}
: CS1 maint: multiple names: authors list (link) - ^ Chen, W.-C. & Ostrouchov, G. (2011). "HPSC -- High Performance Statistical Computing for Data Intensive Research". Archived from the original on 2013-07-19. Retrieved 2013-06-25.
- ^ "Basic Tutorials for R to Start Analyzing Data". 3 November 2022.
- ^ a b Yu, H. (2002). "Rmpi: Parallel Statistical Computing in R". R News.
- ^ Mike Houston. "Folding@Home - GPGPU". Retrieved 2007-10-04.
- ^ "100 most read R posts in 2012 (stats from R-bloggers) – big data, visualization, data manipulation, and other languages".