Which Matrix Storage Format should I choose for large sparse matrices in MKL

Which Matrix Storage Format should I choose for large sparse matrices in MKL


I have a question with some large sparse symmetric matrices of dimensions 100*100. I need to do some computation with the matrices including eigenvalues, eigenvectors, inversion and multiplication by vetors.

I could use BLAS sparse format to store the matrices, but that would be troublesome to calculate the eigenvalues and inversions. However, the matrix has only 5% non-zero values. If I don't use this format, it seems very wasteful.

My question is, whether I should use the packed symmetric form to do all the computations with LAPACK/BLAS Level 2 libraries, or should I use sparse BLAS format to do some simple calculation and convert them to the packed symmetric form to do inversion and factorizations, or use the PARDISO interface?

I'm doing some MCMC algorithm, which needs more than 10,000 iterations, for each iteration, I need to do one matrix inversion, two eigenvalue factorization and several sparse * vector multiplications. So I need some very effective way to perform the program.

Thank you very much.


3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


Yes, the sparse solver format like CSR is
more effective from consumed memory point of view versus the density storage
format. For example for your cases( 100x100) it will ~13 times more efficiency.

But, nevertheless, in your case I wouldnt recommend you to use the sparse format and
use some additional conversion from sparse to density format representation ( all
these conversion functions are not threaded and therefore it make take some additional
time especially if into your case when you have 10000 iterations..)

it should be noted
that using PARDISO for such small cases is not efficient way from the
performance and scalability points of view.


Thank you, Gennady.

So for my case, I should use the packed storage scheme so that I could use the routines for inversion and eigenvalues/eigenvectors for best performance.


Login to leave a comment.