[Trilinos-Users] Symmetric Epetra_CrsMatrix ?

Antoine Dechaume boolegue at gmail.com
Mon Dec 1 11:33:26 MST 2008


My primary goal is to implement a better iterative solver to my code,  
with a good preconditionner.
As I am not sure of the performance impact of what you suggested as  
compared to my "symmetric-aware" matrix vector multiplication code,  
and as I am first looking for an easy implementation, I will have a  
look to other sparse solver libraries.
So for the time being I pass and thank you guys for your answers.

Antoine.


On 1-Dec-08, at 10:58 AM, Heroux, Michael A wrote:

> Antoine,
>
> Yes, you can use this with an iterative solver.  If you need just  
> the action of the matrix, you can write an adapter class that  
> derives from Epetra_Operator.  If you need the matrix coefficients  
> (for example, if you are planning to use any Trilinos  
> preconditioners) then you will want to write an adapter class that  
> derives from Epetra_RowMatrix.  The easiest way to do this is to  
> write an adapter for Epetra_BasicRowMatrix.  Since there are far  
> fewer methods that you need to implement.  You can look at  
> Epetra_JadMatrix as a good example for how you could do this.
>
> Writing these adapters should be fairly straight-forward if you use  
> the RowMap, ColMap, DomainMap and RangeMap of your original  
> Epetra_CrsMatrix as maps for your new class.
>
> The only tricky part will be for the Epetra_RowMatrix adapter.  You  
> will need to provide an implementation of four methods (really three  
> that are different, one is a const version of another) that will  
> require knowledge of nonzero terms that are not locally stored  
> because you are only storing the upper or lower triangle.
>
> One approach to make things simpler would be to ignore nonzeros that  
> are not local (since you are only doing preconditioner and don’t  
> necessarily need the exact matrix).
>
> I hope this helps.
>
> Mike
>
>
> On 12/1/08 11:29 AM, "Antoine Dechaume" <boolegue at gmail.com> wrote:
>
> Hi Mike,
>
> thanks for your answer. Is there a way I could use this trick with  
> an iterative solver ?
>
> Antoine.
>
>
> On 28-Nov-08, at 3:55 PM, Heroux, Michael A wrote:
>
> Antoine,
>
>  There is no explicit support for symmetric storage.  However, it is  
> possible to realize the storage savings by storing the main diagonal  
> as an Epetra_Vector object and the strictly upper or lower triangle  
> as an Epetra_CrsMatrix object.  Then computing y = Ax would be  
> approximatly as follows:
>
>  // upperA and diagA were previously constructed
>
>  Epetra_Vector Atx(y.Map());
>
>  upperA.Multiply(false, x, y);
>  upperA.Multiply(true, x, Atx);
>  diagA.Multiply(1.0, diagA, x, y, 1.0);
>  y.Update(1.0, Atx, 1.0);
>
>  Note that if your x and y are Epetra_MultiVectors, the same  
> sequence works if you make Atx a MultiVector.
>
>  There are other combinations of functions that will work also.   
> This approach does not get the computational performance that a true  
> symmetric matvec would get, but does save storage.   We have  
> discussed a symmetric multiply function in the past, but have not  
> followed through on its implementation.  When considered in the  
> larger context of preconditioned iterative methods, full support for  
> symmetric storage is a large effort and its payoff is hard to  
> realize for our typical problem base that is primarily a broad set  
> that is mostly nonsymmetric.
>
>  We will continue to evaluate the value of native support for  
> symmetric storage.
>
>  I hope this helps.
>
>  Mike
>
>
>  On 11/27/08 2:43 PM, "Antoine Dechaume" <boolegue at gmail.com> wrote:
>
>
> Hello,
>
>  is there a way to specify a symmetric Epetra_CrsMatrix that will  
> store
>  only upper part for instance ?
>
>  Antoine.
>
>  _______________________________________________
>  Trilinos-Users mailing list
>  Trilinos-Users at software.sandia.gov
>  http://software.sandia.gov/mailman/listinfo/trilinos-users
>
>
>
>
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://software.sandia.gov/mailman/private/trilinos-users/attachments/20081201/92b94199/attachment.html 


More information about the Trilinos-Users mailing list