MATLAB Answers


Diagonal matrix size reduction

Asked by Octavian on 30 Mar 2015
Latest activity Commented on by Octavian on 30 Mar 2015
Dear All,
I have a loop written for GPU (gpuarrays) with multiple matrix inputs, one of which is a diagonal matrix A with size m (A=eye(m)), with m from 10000-100000. m proves limiting as I get GPU memory errors with higher m values. A is involved in several left and right multiplication steps, and is updated (fills) with each iteration. Is there any matrix decomposition/factorization implementation in matlab that will allow rendering of A as A= a*b (or a*b*c and so on) where a size is (m,n), b size (n,m) etc (n << m) so that I can introduce intermediate code steps using a, b etc in these operations and reduce memory cost? Thank you, as always,


Sign in to comment.

1 Answer

Answer by Edric Ellis
on 30 Mar 2015
 Accepted Answer

In R2015a, sparse support was added to gpuArray - perhaps this might help you? mtimes is one of the methods that is implemented for sparse gpuArray.

  1 Comment

Thank you Edric, I will try what you suggested. My only concern is that, even if A enters the loop as speye(m), as A fills (the number of nonzero elements increases with every iteration), its memory allocation with drastically increase with the last iterations. If there is a quick way to decompose a nonsparse nonsymmetric square matrix to reduce its size, please let me know. Thank you again,

Sign in to comment.