Hi Dave, > On 2 Jun 2020, at 05:43, Dave May <[email protected]> wrote: > > > > On Tue 2. Jun 2020 at 03:30, Matthew Knepley <[email protected]> wrote: > On Mon, Jun 1, 2020 at 7:03 PM Danyang Su <[email protected]> wrote: > Thanks Jed for the quick response. Yes I am asking about the repartitioning > of coarse grids in geometric multigrid for unstructured mesh. I am happy with > AMG. Thanks for letting me know. > > All the pieces are there, we just have not had users asking for this, and it > will take some work to put together. > > Matt - I created a branch for you and Lawrence last year which added full > support for PLEX within Telescope. This implementation was not a fully > automated algmoeration strategy - it utilized the partition associated with > the DM returned from DMGetCoarseDM. Hence the job of building the distributed > coarse hierarchy was let to the user. > > I’m pretty sure that code got merged into master as the branch also contained > several bug mixes for Telescope. Or am I mistaken?
I think you're right. I didn't manage to get the redistribution of the DMPlex object done last summer (it's bubbling up again). As I see it, for redistributed geometric multigrid on plexes, the missing piece is a function: DMPlexRedistributeOntoComm(DM old, MPI_Comm comm, DM *new) I went down a rabbit hole of trying to do this, since I actually think this replaced the current interface to DMPlexDistribute, which is DMPlexDistribute(DM old, PetscInt overlap, PetscSF *pointDistSF, DM *new) Where the new DM comes out on the same communicator as the old DM, just with a different partition. This has lots of follow-on consequences, for example, one can't easily load on P processes and then compute on Q. Unfortunately, collectiveness over MPI_Comm(old) is baked into the redistribution routines everywhere, and I didn't manage to finish things. Lawrence
