On Fri, Jul 28, 2017 at 12:12 PM, Dave May <dave.mayhe...@gmail.com> wrote:
> > On Fri, 28 Jul 2017 at 20:58, Dave May <dave.mayhe...@gmail.com> wrote: > >> Hi Richard, >> >> On Fri, 28 Jul 2017 at 19:51, Richard Tran Mills <rtmi...@anl.gov> wrote: >> >>> Folks, >>> >>> I've been debugging my rmills/add-aijmkl branch, and I found that one >>> bug I had was related to what happens when I am using the MKL sparse >>> inspector-executor routines inside an AIJMKL matrix and then MatScale is >>> called on the matrix. MatScale modifies the entries of the matrix, thereby >>> invalidating the internal representation that the MKL routines use. >>> Currently, I've set things up so that the MKL representation is only >>> updated in MatAssemblyEnd_SeqAIJMKL and MatDuplicate_SeqAIJMKL. Looks like >>> I also need a MatScale_SeqAIJMKL that will update the MKL representation >>> when needed. Are there other routines that may modify the matrix entries >>> without invoking MatAssemblyEnd? >>> >> >> I believe MatDiagonalSet and MatDiagonalScale fall into this category >> > > MatAXPY may, or may not, call AssemblyEnd depending on the MatStructure > arg. If the non-zero pattern is the same AssembyEnd is not called, however > it will be called if the non-zero pattern SUBSET or DIFFERENT is chosen. > Ah, thanks for pointing this out -- it may have taken me quite a while to figure this out, otherwise! Man, getting this mkl_sparse_optimize() stuff incorporated is more complicated than I thought it was. =) (Things are fine when using the normal MKL routines that don't use the inspector-executor stuff.) --Richard > > > >> Thanks, >> Dave >> >> >>> >>> --Richard >>> >>