[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
at
https://software.intel.com/en-us/node/590105
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
operations.
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
probably.
* 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?
--Richard
-------------- 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