[Trilinos-Users] EpetraExt MatrixMatrix

Kevin Long kevin.long at ttu.edu
Wed Jun 2 12:57:14 MDT 2010


Thanks to all who replied for their good suggestions. 

Mike, I should have thought to look at using EpetraExt's scaling functions.  
Thanks for pointing it out. 

I'll do that for now, and then wait for Kurt's optimized TPetra 
implementation.

Thanks,

Kevin



On Wednesday 02 June 2010 10:29:13 am Heroux, Michael A wrote:
> Kevin,
>
> We (read summer intern) are developing a new Matrix-Matrix capability using
> templates for support of Tpetra.  I will mention this Kurtis Nusbaum (the
> intern).  There are no plans, AFAIK, to modify the existing Epetra
> versions.
>
> I think the best we can do at this point is to form D1 = sqrt(D) (O(n)
> cost) as you suggest, then explicitly scale B using the LeftScale() method
> (O(nz) cost), the use the existing Matrix-Matrix multiply kernel.
>
> Kurtis is on this list, so he is now aware.
>
> Mike
>
> On 6/1/10 6:23 PM, "Kevin Long" <kevin.long at ttu.edu> wrote:
> > Hi,
> >
> > Vicki Howle and I have encountered a problem for which we want to compute
> > explicitly (as an Epetra_CrsMatrix) the product B^T D B, where D is a
> > diagonal matrix. We have B as an Epetra_CrsMatrix and diag(D) as an
> > Epetra_Vector.
> >
> > We can do this easily enough by making an Epetra_CrsMatrix representation
> > of D, then calling EpetraExt::MatrixMatrix::Multiply() twice, first to
> > form C1=D*B, then again to form C= B^T C1.  The second call can use
> > transposeA=true so we don't need to form B^T.
> >
> > Alternatively, I could form C1=sqrt(D) B, then do C1^T C1. Again, not
> > hard to write.
> >
> > However, neither approach takes advantage of the fact that D is diagonal,
> > which means (a) I need to construct a whole Epetra_CrsMatrix for
> > something that can really just be stored as a vector, and (b) inside
> > MatrixMatrix::Multiply(), I'm doing needless work to find the graph of
> > the product D B when I already know that D B and B will have the same
> > graph.
> >
> > The operation B^T D B is a fairly common; any chance that someone will
> > extend MatrixMatrix to provide an optimized multiply for that case? Or
> > better yet, has anyone already written such code?
> >
> > Thanks,
> >
> > Kevin
>
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users



-- 
------------------------------------------------------
Kevin Long
Associate Professor
Department of Mathematics and Statistics
Texas Tech University
Lubbock, TX 
------------------------------------------------------



More information about the Trilinos-Users mailing list