On May 14, 2011, at 3:51 PM, Jed Brown wrote:

> On Sat, May 14, 2011 at 22:39, Barry Smith <bsmith at mcs.anl.gov> wrote:
>  and get things like MatGetVecs() to properly pass local to global 
> information to the created vectors.
> 
> This currently happens.

   Good.

>  
> So for example we could have something like
> 
> typedef struct _n_PetscLayout* PetscLayout;
> struct _n_PetscLayout{
>  MPI_Comm  comm;
>  PetscInt  n,N;         /* local, global vector size */
>  PetscInt  rstart,rend; /* local start, local end + 1 */
>  PetscInt  *range;      /* the offset of each processor */
>  PetscInt  bs;          /* number of elements in each block (generally for 
> multi-component problems) Do NOT multiply above numbers by bs */
>  PetscInt  refcnt;      /* MPI Vecs obtained with VecDuplicate() and from 
> MatGetVecs() reuse map of input object */
> 
>  PetscInt nfields; IS *fields;
>  IS localtoglobalmapping,blocklocaltoglobalmapping.
>  USER INFO LIKE boundary condition locations;
> };
> 
> My only concern here is that there is a bit of duplicated information between 
> the IS (or ISLocalToGlobalMapping?) and the PetscLayout.

     What is that duplicate information? Can it be removed or can we provide 
automatic consistency checks so that the "duplication" is not a problem? 

> I would like to see the local space become a more central property of Mat and 
> Vec (this would simplify DMComposite and allow fusing the scatters which 
> should be good for performance), so putting it in PetscLayout makes sense to 
> me. For (rare) memory reasons, I think it should be possible for the 
> ISLocalToGlobalMapping to be NULL. 

   Of course it can be null now and would be able to be null in the future.


   Barry



Reply via email to