Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7029 Discussions

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

junuylia
Beginner
423 Views
Hi,

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.

Best,
Jun
0 Kudos
2 Replies
Gennady_F_Intel
Moderator
423 Views

Jun,

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.

--Gennady
0 Kudos
junuylia
Beginner
423 Views
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.

Jun
0 Kudos
Reply