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
