<div dir="ltr"><div><div><div>Hi Folks,<br><br></div>It's come up in discussions a few times that, ideally, the burden of supporting very specific optimizations for complex architectures like Intel's upcoming Knights Landing MIC processor should be handled as much as possible by a library like MKL.  To take some concrete steps towards this, I want to add support for using the new sparse BLAS inspector-executor ("SpMV 2" -- no idea why they called it that) routines that were added in the recent release (11.3) of MKL.  These use an inspector-executor model to provide some optimized operations (sparse matrix-vector multiplication, sparse matrix-matrix multiplication, triangular solve, sparse matrix addition).  Those interested can have a look at the documentation here:<br><br>  <a href="https://software.intel.com/en-us/node/590105">https://software.intel.com/en-us/node/590105</a><br><br></div>I am thinking that the cleanest way to support this is to add a new matrix subclass that mostly inherits from MATAIJ (or MATBAIJ), calling the inspection ("analysis") routines upon matrix assembly finalization and using the "SpMV 2" routines as appropriate.  Then if someone wants to use the SpMV 2 stuff, they ensure that their matrix ends up as MATMKLSPMV2 (or whatever better name we come up with).  Does this sound reasonable?  If you have a better suggestion, please let me hear it.<br><br></div>--Richard<br></div>