[petsc-dev] Vertex assignment in DMPlexDistribute

Michael Lange michael.lange at imperial.ac.uk
Mon Nov 18 03:24:41 CST 2013


Hi Matt,

I think there is a misunderstanding here. I am referring to the case 
where DMPlexDistribute() is run with overlap=1 (which is not the case in 
SNES ex12) and vertices in the overlap/halo region are assigned to the 
wrong rank. This can lead to a case where a proc may own a vertex that 
is not in its original (non-overlapping) partition, although the 
attached cell is not owned and will be marked as "ghost" by 
DMPlexConstructGhostCells().

To illustrate this, I have attached an example consisting of a unit 
square with 3 faces in each dimension and a section with only vertex 
dofs. If run with two ranks, rank 1 will own all its vertices (13 
roots), whereas rank 0 only owns vertices not in the overlap/halo of 
rank 1 (3 roots). My understanding is that, since the original partition 
splits the square along its diagonal, the vertex distribution should be 
10 to 6 with the 4 diagonal vertices assigned to rank 1 and all other 
vertices assigned according to the original partition. Is this correct, 
or am I missing something here?

Many thanks for all your help
Michael

On 16/11/13 13:54, Matthew Knepley wrote:
> On Sat, Nov 16, 2013 at 7:22 AM, Michael Lange 
> <michael.lange at imperial.ac.uk <mailto:michael.lange at imperial.ac.uk>> 
> wrote:
>
>     Hi,
>
>     I notice that, when creating the point SF for the parallel
>     partition in DMPlexDistribute, cells are assigned to procs
>     according to the original partition but vertices aren't. Was this
>     done by design or is this a bug?
>
>
> If this were true, there would be no communication for the P1 test of 
> SNES ex12. Here is running it with
> -interpolate 1 and -dm_view ::ascii_info_detail
>
> PetscSF Object: 2 MPI processes
>   type: basic
>     sort=rank-order
>   [0] Number of roots=19, leaves=5, remote ranks=1
>   [0] 4 <- (1,6)
>   [0] 5 <- (1,8)
>   [0] 7 <- (1,9)
>   [0] 10 <- (1,13)
>   [0] 11 <- (1,17)
>   [1] Number of roots=19, leaves=0, remote ranks=0
>   [0] Roots referenced by my leaves, by rank
>   [0] 1: 5 edges
>   [0]    4 <- 6
>   [0]    5 <- 8
>   [0]    7 <- 9
>   [0]    10 <- 13
>   [0]    11 <- 17
>   [1] Roots referenced by my leaves, by rank
>
> So there are 3 vertices and 2 edges in the point SF.
>
>    Matt
>
>     In case it is a bug, I have attached a patch that fixes this by
>     using the closure of the original partition instead.
>
>     Thanks and kind regards
>     Michael
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20131118/323cbec4/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: plex_overlap.c
Type: text/x-csrc
Size: 2189 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20131118/323cbec4/attachment.bin>


More information about the petsc-dev mailing list