> 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/

Reply via email to