[petsc-dev] Interface for supporting MKL sparse inspector-executor model?

Richard Mills richardtmills at gmail.com
Mon Feb 13 18:03:55 CST 2017

Hi All,

I've finally gotten around to putting together a matrix class (called
AIJMKL for now) that inherits from AIJ but uses some methods provided by
Intel MKL.  One thing I'd like to support is the "SpMV 2" sparse
inspector-executor routines, detailed in the MKL reference manual starting


The basic usage model is this: You set some hints (see the functions at
https://software.intel.com/en-us/node/590120) about how a matrix you have
is going to be used, e.g., you call 'mkl_sparse_mv_hint' to set a guess
about the number of upcoming matrix-vector multiplications that will be
performed with this matrix.  When you've set various hints, then you call
'mkl_sparse_optimize' to start an analysis operation in which MKL examines
the sparsity structure and maybe does some internal things for
optimizations.  Then you can then apply mkl_sparse_d_mv to perform mat-vec

I am wondering what a proper way to provide a PETSc interface to these is.
I can think of a few ways to do this.  The most straightforward way is

* Add MatAIJMKLSetMVHint(), MatAIJMKLSetMMHint(), etc.
* Add MatAIJMKLOptimize() call.

I also will be adding a BAIJMKL class for BAIJ matrices, so I'd duplicate
these.  Does this option sound OK?  Or do others think I should do
something more general?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170213/2e61ece8/attachment.html>

More information about the petsc-dev mailing list