remoteCrossProdMatVec {bigGP} | R Documentation |
Distributed Crossproduct of a Rectangular Matrix and a Vector
Description
remoteCrossProdMatVec
multiplies the transpose of a distributed rectangular matrix
by a distributed vector or matrix. The objects can both be contained within environments or
ReferenceClass objects as well as the global environment on the slave processes.
Usage
remoteCrossProdMatVec(matName, inputName, outputName, matPos = '.GlobalEnv',
inputPos = '.GlobalEnv', outputPos = '.GlobalEnv', n1, n2, h1 = 1, h2 = 1)
Arguments
matName |
name of the rectangular matrix, given as a character string, giving the name of the object on the slave processes. |
inputName |
name of the vector being multiplied by, given as a character string, giving the name of the object on the slave processes. |
outputName |
the name to use for resulting vector, on the slave processes. |
matPos |
where to look for the rectangular matrix, given as a character string (unlike
|
inputPos |
where to look for the input vector, given as a character string (unlike
|
outputPos |
where to do the assignment of the output vector, given as a character string (unlike
|
n1 |
a positive integer, the number of rows of the matrix. |
n2 |
a positive integer, the number of columns of the matrix. |
h1 |
a positive integer, the block replication factor, |
h2 |
a positive integer, the block replication factor, |
Details
Computes the distributed product using a blocked algorithm, resulting in a distributed vector.
References
Paciorek, C.J., B. Lipshitz, W. Zhuo, Prabhat, C.G. Kaufman, and R.C. Thomas. 2015. Parallelizing Gaussian Process Calculations in R. Journal of Statistical Software, 63(10), 1-23. doi:10.18637/jss.v063.i10.
Paciorek, C.J., B. Lipshitz, W. Zhuo, Prabhat, C.G. Kaufman, and R.C. Thomas. 2013. Parallelizing Gaussian Process Calculations in R. arXiv:1305.4886. https://arxiv.org/abs/1305.4886.
See Also
Examples
## Not run:
if(require(fields)) {
SN2011fe <- SN2011fe_subset
SN2011fe_newdata <- SN2011fe_newdata_subset
SN2011fe_mle <- SN2011fe_mle_subset
nProc <- 3
n <- nrow(SN2011fe)
m <- nrow(SN2011fe_newdata)
nu <- 2
inputs <- c(as.list(SN2011fe), as.list(SN2011fe_newdata), nu = nu)
prob <- krigeProblem$new("prob", numProcesses = nProc, n = n, m = m,
predMeanFunction = SN2011fe_predmeanfunc, crossCovFunction =
SN2011fe_crosscovfunc, predCovFunction = SN2011fe_predcovfunc,
meanFunction = SN2011fe_meanfunc, covFunction = SN2011fe_covfunc,
inputs = inputs, params = SN2011fe_mle$par, data = SN2011fe$flux,
packages = c("fields"))
remoteCalcChol(matName = "C", cholName = "L", matPos = "prob",
cholPos = "prob", n = n, h = prob$h_n)
remoteCalc("data", "mean", `-`, "tmp1", input1Pos = "prob", input2Pos = "prob")
remoteForwardsolve(cholName = "L", inputName = "tmp1", outputName = "tmp2",
cholPos = "prob", n1 = n, h1 = prob$h_n)
remoteBacksolve(cholName = "L", inputName = "tmp2", outputName = "tmp3",
cholPos = "prob", n1 = n, h1 = prob$h_n)
prob$remoteConstructCov(obs = FALSE, pred = FALSE, cross = TRUE, verbose = TRUE)
# we now have a rectangular cross-covariance matrix named 'crossC'
remoteCrossProdMatVec(matName = "crossC", inputName = "tmp3", outputName = "result",
matPos = "prob", n1 = n, n2 = m, h1 = prob$h_n, h2 = prob$h_m)
result <- collectVector("result", n = n, h = prob$h_n)
}
## End(Not run)