'pbdR' Distributed Matrix Methods

A set of classes for managing distributed matrices, and a collection of methods for computing linear algebra and statistics. Computation is handled mostly by routines from the 'pbdBASE' package, which itself relies on the 'ScaLAPACK' and 'PBLAS' numerical libraries for distributed computing.

pbdDMAT is an R package for distributed matrix algebra and statistics computations over MPI.

With few exceptions (ff, bigalgebra, etc.), R does computations in memory. If the memory of a matrix is too large for a single node, then distributing the ownership of the matrix across multiple nodes is an effective strategy in working with such large data.

The pbdDMAT package contains numerous routines to help with the distribution and management of data, as well as functions for summarizing, inspecting, and analyzing distributed matrices.

Often the syntax is identical to serial R, only instead of calling cov(x) on a matrix x, you would call it on a distributed matrix x. This is possible by extensive use of R's S3 and S4 methods.

Much of the numerical linear algebra is powered by the ScaLAPACK library, which is the distributed analogue of LAPACK, used extensively by R.


pbdDMAT requires

  • A system installation of MPI
  • R version 3.0.0 or higher
  • The pbdMPI and pbdBASE packages, as well as their dependencies.

Assuming you meet the system dependencies, you can install the stable version from CRAN using the usual install.packages():


The development version is maintained on GitHub:


See the vignette for installation troubleshooting.


# load the package
# initialize the specialized MPI communicators
# create a 100x100 distributed matrix object
dx <- ddmatrix(1:100, 10)
# print
print(dx, all=TRUE)
# shut down the communicators and exit

Save this program as pbd_example.r and run it via:

mpirun -np 2 Rscript pbd_example.r

Numerous other examples can be found in both the pbdDMAT vignette, as well as the pbdDEMO package and its corresponding vignette.


pbdDMAT is authored and maintained by the pbdR core team:

  • Drew Schmidt
  • Wei-Chen Chen
  • George Ostrouchov
  • Pragneshkumar Patel

With additional contributions from:

  • Lamy de la Chapelle Sebastien
  • The R Core team (some wrapper code taken from the base and stats packages)
  • ZhaoKang Wang (fixes/improvements to apply())
  • Michael Lawrence (fix for as.vector())


Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.5-1 by Drew Schmidt, 4 months ago


Report a bug at http://group.pbdr.org/

Browse source code at https://github.com/cran/pbdDMAT

Authors: Drew Schmidt [aut, cre] , Wei-Chen Chen [aut] , Sebastien Lamy de la Chapelle [aut] , George Ostrouchov [aut] , Pragneshkumar Patel [aut] , ZhaoKang Wang [ctb] , Michael Lawrence [ctb] , R Core team [ctb] (some wrappers taken from the base and stats packages)

Documentation:   PDF Manual  

Task views: High-Performance and Parallel Computing with R

GPL (>= 2) license

Imports utils, methods

Depends on pbdMPI, pbdBASE, stats

System requirements: OpenMPI (>= 1.5.4) on Solaris, Linux, Mac, and FreeBSD. MS-MPI (Microsoft HPC Pack 2012) or MPICH2 (>= 1.4.1p1) on Windows.

Depended on by pbdDEMO, pmclust.

See at CRAN