[Trilinos-Users] Epetra_Vector with overlap

Heroux, Michael A maherou at sandia.gov
Wed Jul 7 15:10:09 MDT 2010


Andy,

I think careful use of Option 2 is OK.  It is used quite frequently for what
Markus is doing.  

Mike


On 7/7/10 3:25 PM, "Andrew Salinger" <agsalin at sandia.gov> wrote:

>  
> Marcus,
> 
> I see two choices:
> In both cases you have 2 Maps: owned (unique GIDs) and overlap.
> (1) Have two copies of the vector (which you want to avoid)
> (2) Construct your overlap map so that the owned elements
> are contiguous. Then your owned vector can be constructed
> as a View inside the overlap vector.
> In your example, if the overlap map on PE1 is
>  4 5 6 7 8 9   or    5 6 7 8 9 4,
> then the owned vector can be constructed with
> the map  5 6 7 8 9 and a pointer to the element
> with "5" in the overlap map.
> 
> I think (1) is the Best Practices approach. Option (2)
> is fragile, since an algorithm (say in NOX) that makes a
> copy of an owned vector will allocate it at the shorter
> length. If you try this trick on that vector, it will
> try and write past the allocated length.
> 
> Andy
> 
> -----Original Message-----
> From: trilinos-users-bounces at software.sandia.gov
> [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf Of Markus Berndt
> Sent: Wednesday, July 07, 2010 9:46 AM
> To: trilinos-users at software.sandia.gov
> Subject: [Trilinos-Users] Epetra_Vector with overlap
> 
> Is it possible to set up communication schedules for an Epetra_Vector with
> overlap that can be used to simply update the overlap region in place? The
> documentation for Epetra_Export and Epetra_Import indicates that one of the
> maps that these use to initialize communication patterns must have GIDs that
> are unique. I interpret that as one of the vectors in an Import or Export call
> must have no overlap at all.
> 
> 
> To illustrate, here is an example:
> 
> x_ovl is an Epetra_Vector with overlap such that on PE0 it owns GIDs 0 1 2 3 4
> and has a copy of 5 and on PE1 it owns GIDs 5 6 7 8 9 and has a copy of 4.
> 
> How do I set up a communication pattern that
> 
> - sends x_ovl(5) from PE1 to PE0 and
> - sends x_ovl(4) from PE0 to PE1
> 
> without an intermediate vector that has only the local data and no overlap at
> all.
> 
> If this is not possible, what would you consider a best practices approach to
> working with vectors that have overlap that avoids unnecessary copy operations
> between equivalent vectors with and without overlap?
> 
> Thanks
> 
> - Markus
> 
> --
> Markus Berndt, LANL CCS-2, Mail Stop D413, 505-665-4711
> 
> 
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users
> 
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users




More information about the Trilinos-Users mailing list