MATLAB Answers

Backslash operator on GPU

9 views (last 30 days)
Francesco
Francesco on 26 Nov 2013
Commented: Francesco on 27 Nov 2013
Hello,
I need to perform a backslash operation (A \ B = x) to solve Ax = B.
The A matrix has 10^4 - 10^6 D.O.F, so a square matrix of 10^6 x 10^6. It is very sparse, with approx. 21 non-zero entries per row.
Because of its sparseness, I can reach very large matrices on the CPU, by using the sparse() form. However, when I try to use the \ operator on gpuArrays, it says that I cannot have a sparse matrix as a gpuArray variable. This therefore limits me on the card to about ~8000x8000 square matrix.
The increase in performance on the GPU is substantial, above >1000x1000 square matrix, and is absolutely necessary for 10^6 x 10^6 matrices.
Is there any way I can input sparse matrices on the GPU? Any other way of accelerating such a computation? Any suggestions?
Cheers,
Francesco

  0 Comments

Sign in to comment.

Answers (1)

Edric Ellis
Edric Ellis on 27 Nov 2013
Unfortunately, as you have discovered, there is currently no support for sparse gpuArrays, and no straightforward workaround.

  1 Comment

Francesco
Francesco on 27 Nov 2013
Would writing a CUDA native program using cuSPARSE to solve the equation work? Would the input of that kernel when called by matlab have to consist of full or sparse matrices?
I could perhaps pre-process on Matlab the full matrix into a more compact form required by cuSPARSE but still make it "look" like a full matrix when I pass it to the cuda kernel, if that makes sense?
Thank you,
Francesco

Sign in to comment.