我的代码在处理大稀疏矩阵(刚度和空气动力学影响系数矩阵)的乘法时遇到了一些性能问题。主要是我必须在我的代码中经常将这些矩阵相乘。基本上,当然不应该乘以稀疏矩阵,而是使用矩阵向量乘法。但是,就我而言,我几乎无法阻止矩阵-矩阵乘法。
现在...我得到 CSC、CSR 和 COO 格式的稀疏矩阵作为输入。(也不明智,但我不能影响这个界面-.-)。是否有经验法则可以帮助我决定乘法中的矩阵应该以哪种格式最好地得到高性能代码?
例如,我知道英特尔的(将 CSR-matrix 与 CSC-matrix相乘),另一方面mkl_dcsrcsc
却找不到(将 CSC-matrix 与 CSR-matrix 相乘)。mkl_dcsccsr
因此,是否明智转换从 CSC 格式到 CSR 格式和进入? 走很长的路并转换可能是明智的到和到(为了启用mkl_dcsrcoo
)?
我怎样才能找出最适合用于矩阵的格式以及最适合用于矩阵-矩阵乘法的函数/例程?