[R] Fast matrix multiplication
Ravi Varadhan
r@vi@v@r@dh@n @ending from jhu@edu
Fri Aug 10 17:22:12 CEST 2018
Hi,
I would like to compute: A %*% B %*% t(A)
A is a mxn matrix and B is an nxn symmetric, positive-definite matrix, where m is large relative to n (e.g., m=50,000 and n=100).
Here is a sample code.
M <- 10000
N <- 100
A <- matrix(rnorm(M*N), M, N)
B <- crossprod(matrix(rnorm(N*N), N, N)) # creating a symmetric positive-definite matrix
# method 1
system.time(D <- A %*% B %*% t(A))
# I can obtain speedup by using a Cholesky decomposition of B
# method 2
system.time({
C <- t(chol(B))
E <- tcrossprod(A%*%C)
})
all.equal(D, E)
I am wondering how to obtain more substantial speedup. Any suggestions would be greatly appreciated.
Thanks,
Ravi
[[alternative HTML version deleted]]
More information about the R-help
mailing list