[Trilinos-Users] [EXTERNAL] ML matrix-matrix multiplication

Raymond Tuminaro rstumin at sandia.gov
Mon Mar 25 10:08:15 MDT 2013


ML's matrix-matrix multiply has different assumptions than Epetra's ... with respect to column maps and
empty columns. ML makes sure that its matrices satisfy these assumptions and we don't generally recommend
that others coming from outside ML use the ML's matrix-matrix multiply.

-Ray


On 03/25/13 06:56, Pavel Jiránek wrote:
> Dear Trilinos people,
>
> I'm working on a small AMG code. I normally use MatrixMatrix from EpetraExt to compute the Galerkin matrices Pt * A * P
> (or R * A * P in general) and everything worked fine. I saw once a document somewhere in the Trilinos source tree some
> comparison of {E/T}petra matrix-matrix multiplications with the ones used in ML (in particular ML_Epetra_RAP) and I
> thought if I could try it in my code if it would increase its performance since at some points the matrix-matrix
> multiplications take about 50% of the preconditioner setup time.
>
> However, it seems that there is a small problem with the way how I'm handling the singletons in the linear problem (at
> least it seems so). I'm using aggregation at the moment and if there is a singleton in the matrix on a level (even
> singleton with respect to the chosen connection strength criterion) I just put a zero row in the prolongator at the
> corresponding position. That is, e.g., if I'd have a simple 3D Laplacian on a 2x2 grid with an artificial large element
> on the diagonal
>
> $ full(A)
>
> ans =
>
> 50 -1 -1 0 -1 0 0 0
> -1 6 0 -1 0 -1 0 0
> -1 0 6 -1 0 0 -1 0
> 0 -1 -1 6 0 0 0 -1
> -1 0 0 0 6 -1 -1 0
> 0 -1 0 0 -1 6 0 -1
> 0 0 -1 0 -1 0 6 -1
> 0 0 0 -1 0 -1 -1 6
>
> the prolongator looks like this:
>
> $ full(P)
>
> ans =
>
> 0 0
> 0.5774 0
> 0 0.5000
> 0.5774 0
> 0 0.5000
> 0.5774 0
> 0 0.5000
> 0 0.5000
>
> (the restrictor is just a transpose of P). If I apply the strength criterion used, e.g., in the smoothed aggregation,
> the large diagonal element will be a singleton.
>
> Now when I implement the RAP product using EpetraExt::MatrixMatrix::multiply it works just fine and I get the
> "coarse-grid" matrix
>
> $ full(RAP_Epetra)
>
> ans =
>
> 4.6667 -1.1547
> -1.1547 4.5000
>
> However, ML_Epetra_RAP returns
>
> $ full(RAP)
>
> ans =
>
> -1.0000 2.3094
> 4.0415 -0.2500
>
>
> For problems without singletons (and hence no zero rows in P) ML multiplications work fine. It seems to me that this
> problem is linked to the occurrence of singletons or, more precisely, to the way how I treat them (which, on the other
> hand, are quite natural in my opinion). Is there any other "special" way how singletons are treated in ML? Or should the
> prolongator (if it could have zero rows in ML) have some other special property so that ML_Epetra_RAP would work fine?
>
> Thank in advance.
>
> Best regards,
>
> Pavel
>
>
>
> This body part will be downloaded on demand.

-- 
Ray Tuminaro                      phone: (925) 294-2564
MS 9159                           fax:   (925) 294-2234
Sandia National Laboratories      email: rstumin at sandia.gov
PO Box 969                        http://www.cs.sandia.gov/~rstumin
Livermore, CA 94551




More information about the Trilinos-Users mailing list