cancel
Showing results for
Did you mean:

# Archives Discussions

Journeyman III

## Matrix inversion

that doesn't fit in memory?

I am pondering how I am going to invert a matrix that isn't going to fit in GPU memory. The matrix size is about 23000 currently but is expected to grow significantly over time.

I tried looking a matrix block decomposition, but accuracy suffers greatly (Matlab simulation).

Is this perhaps one problem not suitable for the GPU due to memory limitations?

3 Replies

## Matrix inversion

From what I remember in linear algebra, matrix inversion is just about the worst thing you can do from a numerical stability standpoint. What is the condition number of your matrix? Blocked LU with partial pivoting is fairly stable and is commonly used to solve linear systems. Furthermore, it's one of the best things you can do on a GPU as you can acheive a significant fraction of the GPU's peak performance (since most of your time is spent in matrix multiplications and symmetric rank-k updates). People have even looked at out-of-core solvers (though, I can't find the paper at the moment) running on multiple-GPUs. So, in short, no, this problem is the epitome of what should be done using a GPU.

Journeyman III

## Matrix inversion

Just so there is no confusion. When I wrote a matrix size of 23000, I meant 23000x23000 in doubles which is over 4GB (same amount of memory required for inverted matrix). This is currently being inverted on a normal CPU on a PC with plenty of host memory.

I don't have the condition number of the matrix, sorry. Blocked LU seems to use similar math to Schur's decomposition (which introduces significant noise of the order 1e-04 in a matrix filled with random numbers from 0-1).

I do know that the matrix we are using is dense.