I am developing a program that computes a massive amount of matrix-vector products in double precision on sparse matrices.
I would like to make some of these computations on my office computer and I was thinking about porting it to some cuda library and give it a try.
Do you have any advice on the card I should by?
Which card give now the best double precision throughput?
The tesla family is too expensive for me so I was looking at something in the gtx family.
Matrix-Vector products are memory bandwidth bound, so you should buy the card with the highest memory bandwidth.
If however the matrices and vectors are generated on the CPU and used only once, don’t buy a GPU at all. The PCIe bandwidth limit would force a GPU to be slower than the CPU no matter how fast the GPU is.
I have a matrix which I have already computed and I iterate it on millions of vector…
So, it is always the same matrix, I just change the vectors.
The vectors are the differences between two unit vectors, since the matrix is Markov,positive and irreducible, this gives me a rigorous estimate on the numerical error of the power iteration method to find the steady state.
In this case, what do you think?
The matrices I’m working on now are really sparse (but I want to let the dimension grow), and, in binary format, are less than 500 Mb; so I think they could be loaded fully in the video card memory.
So, the only bandwidth issue should be when I generate the vector…
So you actually need matrix-matrix products. These are much better suited for GPUs.
The ratio between single and double precision GFLOP/s is 12 for compute capability 2.1 devices but 8 for CC 2.0 devices, so for double precision calculations your are better off with a compute capability 2.0 device (which incidentally also have the highest absolute GFLOP/s values). Still I would also recommend to buy a card with a high memory bandwidth.
So depending on how much you are willing to spend, a GTX 580, GTX 570 or the new GTX 560 Ti based of the GF110 chip would be the best card for you. If you really want to spend less than that, one of the older GTX 560 Ti or a GTX 560 (without Ti) might also do. Wikipedia has a very handy comparison chart in their Geforce 500 Series article.