- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am starting to write a new application that will have to do sparse*dense matrix multiplies. Before just coding all the alternatives and benchmarking them I'd like to know whether it is know if one of the alternative storage formats is more efficient than the others. I am just guessing here, but it seems to me that CSR or CSC might help with data locality more that the coordinate format since in this case the ordering of the matrix can be basically random. Any clues?
Cheers,
Cristian
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Christian,
First of all,I'd recommend to take a lookat the structure of matrices. For example if it is known that a matrix consists of a few diagonals, the diagonal format is the best storage scheme to gain efficiency. If your matrix consists of many square dense blocks, please use the block sparse row.
If the matrix is not regularly structured, MKL Sparse BLAS routines for the CSR and CSC formats perform significantlybetter than for the coordinate format. If you are going to do non-transposed sparse-dense matrix multiplies for general matrices like A x, Id recommend to use the CSR format. The CSC format is preferable for transposed case A^T x. Id alsolike toremind that the routines for the CSR and CSC formats are OpenMP threaded.
All the best
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Christian,
First of all,I'd recommend to take a lookat the structure of matrices. For example if it is known that a matrix consists of a few diagonals, the diagonal format is the best storage scheme to gain efficiency. If your matrix consists of many square dense blocks, please use the block sparse row.
If the matrix is not regularly structured, MKL Sparse BLAS routines for the CSR and CSC formats perform significantlybetter than for the coordinate format. If you are going to do non-transposed sparse-dense matrix multiplies for general matrices like A x, Id recommend to use the CSR format. The CSC format is preferable for transposed case A^T x. Id alsolike toremind that the routines for the CSR and CSC formats are OpenMP threaded.
All the best
Sergey

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page