Learn R Programming

pbdDMAT (version 0.2-3)

SlotAccessors: Accessor Functions for Distributed Matrix Slots

Description

Functions to get dimension information, local storage, or current BLACS context from a distributed matrix.

Usage

## S3 method for class 'ddmatrix':
nrow(x)
## S3 method for class 'ddmatrix':
ncol(x)
## S3 method for class 'ddmatrix':
NROW(x)
## S3 method for class 'ddmatrix':
NCOL(x)
## S3 method for class 'ddmatrix':
length(x)
## S3 method for class 'ddmatrix':
dim(x)
## S3 method for class 'ddmatrix':
submatrix(x)
## S3 method for class 'ddmatrix':
ldim(x)
## S3 method for class 'ddmatrix':
bldim(x)
## S3 method for class 'ddmatrix':
ICTXT(x)
## S3 method for class 'ddmatrix':
ownany(x, ...)
## S3 method for class 'missing':
ownany(dim, bldim=.BLDIM, ICTXT=.ICTXT, x)

Arguments

x
numeric distributed matrix
dim
global dimension.
bldim
blocking dimension.
ICTXT
BLACS context.
...
Extra arguments.

Value

  • Each of dim(), ldim(), bldim() return a length 2 vector. Each of nrow(), ncol(), and length() return a length 1 vector. Likewise, so does ICTXT(). submatrix() returns a matrix; namely, submatrix(x) returns a matrix of dimensions ldim(x).

Details

The functions nrow(), ncol(), length() and dim() are the natural extensions of their ordinary matrix counterparts. ldim() will give the dimension of the matrix stored locally on the process which runs the function. This is a local value, so its return is process-dependent. For example, if the 3x3 global matrix x is distributed as the ddmatrix dx across two processors with process 0 owning the first two rows and process 1 owning the third, then ldim(dx) will return 2 3 on process 0 and 1 3 on process 1. bldim() will give the blocking dimension that was used to block-cyclically distribute the distributed matrix. submatrix() will give the local storage for the requested object. ICTXT() will give the current BLACS context (slot ICTXT) for the requested object. ownany() is intended mostly for developers. It answers the question "do I own any of the data?". The user can either pass a distributed matrix object or the dim, bldim, and ICTXT of one.

Examples

Run this code
# Save code in a file "demo.r" and run with 2 processors by
# > mpiexec -np 2 Rscript demo.r

library(pbdDMAT, quiet = TRUE)
init.grid()

x <- ddmatrix(1:9, 3, 3)
x <- as.ddmatrix(x)

y <- list(dim=dim(x), ldim=ldim(x), bldim=bldim(x))
comm.print(y)

finalize()

Run the code above in your browser using DataLab