> 6. 11. 2017 v 14:37, Smith, Barry F. <bsm...@mcs.anl.gov>: > > > >> On Nov 6, 2017, at 7:30 AM, Vaclav Hapla <vaclav.ha...@erdw.ethz.ch> wrote: >> >> >>> 6. 11. 2017 v 14:27, Matthew Knepley <knep...@gmail.com>: >>> >>> On Mon, Nov 6, 2017 at 8:24 AM, Smith, Barry F. <bsm...@mcs.anl.gov> wrote: >>> >>> Vaclav, >>> >>> Actually you should not just do this! PETSc already has a full class >>> for managing partitioning (that Matt ignored for no good reason) >>> >>> Obviously, a good reason existed. All sorts of horrible Mat-specific crap >>> was in these. It was impossible to use for mesh partitioning. In addition, >>> when partitioning meshes, you need extra things (like calculation of the >>> dual graph), which is not used in the matrix case. >> >> This is what I thought; mesh and matrix partitioning is quite a different >> task to me, although typically using the same low-level libraries. > > Vaclav, > > MatPartitioning is not just for partitioning Mats, it is for partitioning > graphs. Please look at the code, you'll see Matt duplicated tons of it in > doing his own "mesh partitioning" stuff and all that code duplication is a > sign that they really are not "quite a different task". > > Barry
OK, I looked at it a little bit and I created a new issue #192. I will continue studying it more deeply. Vaclav > >> >> Vaclav >> >>> >>> Matt >>> >>> >>> see MatPartitioningCreate(). Please look at all the functionality before >>> doing anything. >>> >>> Any refactorization you do needs to combine, simplify, and cleanup the >>> two interfaces to create one simpler one. And please let us know your >>> design ideas (with for example an issue on bitbucket) before you go ahead >>> and write a lot of code we may end up not liking. >>> >>> Thanks for looking at this, >>> >>> Barry >>> >>> >>>> On Nov 6, 2017, at 7:09 AM, Vaclav Hapla <vaclav.ha...@erdw.ethz.ch> wrote: >>>> >>>> Hello >>>> >>>> The whole PetscPartitioner class sources are part of >>>> src/dm/impls/plex/plexpartition.c, mixed together with some DMPlex* >>>> functions. >>>> If you don't mind, I would move the PetscPartitioner* stuff into the >>>> separate file petscpartitioner.c >>>> (in future, it could be even moved to a separate directory). >>>> >>>> I would also like to >>>> * add PetscPartitioner{Add,Set,Get}OptionsPrefix, >>>> * create the partitioner lazily in DMPlexGetPartitioner, followed by >>>> PetscObjectIncrementTabLevel, PetscLogObjectParent and >>>> PetscPartitionerSetOptionsPrefix calls, >>>> * edit src/dm/impls/plex/examples/tutorials/ex5.c so that it calls >>>> DMSetFromOptions right after DMPlexCreateFromFile, in order to make the >>>> partitioner changeable from options. >>>> >>>> Do you have anything against? >>>> >>>> Vaclav >>> >>> >>> >>> >>> -- >>> 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 >>> >>> https://www.cse.buffalo.edu/~knepley/