[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