[petsc-dev] proposed minor PetscPartitioner changes

Vaclav Hapla vaclav.hapla at erdw.ethz.ch
Thu Dec 7 09:26:03 CST 2017



> 9. 11. 2017 v 12:53, Matthew Knepley <knepley at gmail.com>:
> 
> I think I need to create a proof-of-concept. I would start by employing MatPartitioning in PetscPartitionerPartition with anything outside of this function untouched for now (as already suggested in #192), if you agree.
> 
> Or what about implementing a special temporary PetscPartitioner implementation wrapping MatPartitioning?
> PETSCPARTITIONERMATPARTITIONING sounds crazy, though :) But could be a good starting point.
> 
> This is probably easier, and allows nice regression testing, namely run all tests using EXTRA_OPTIONS="-petscparitioner_type matpartitioning". I think
> that should be alright for correctness. There are some parallel redistribution tests in Plex.
> 
> We will need at least one performance regression. Look at how I do it here:
> 
>   https://bitbucket.org/petsc/petsc/src/312beb00c9b3e1e8ec8fac64a948a1af779da02f/src/dm/impls/plex/examples/tests/ex9.c?at=master&fileviewer=file-view-default
> 
> You can make custom events, directly access the times, and compare. You could run the two versions
> and check for degradation for a sequence of meshes in parallel.
> 
>   Thanks,
> 
>      Matt

I have made some progress in this, see https://bitbucket.org/haplav/petsc/branch/haplav/feature-petscpartitionermatpartitioning
There's a new test ex23 which shows basically that
  -petscparitioner_type parmetis
and
  -petscparitioner_type matpartitioning -mat_partitioning_type parmetis
give exactly the same results.

I have not created a PR yet since the regression testing you propose fails in some cases. When running
  make -f gmakefile.test test EXTRA_OPTIONS="-petscpartitioner_type matpartitioning -options_left 0" search='dm_impls_plex_tests%'
it seems majority of tests pass but e.g. dm_impls_plex_tests-ex7_7 fails since its reference output has been saved for -petscpartitioner_type simple. How to deal with that, please?

As can be seen in my PetscPartitionerPartition_MatPartitioning, the needed manipulations with IS are slightly more complicated than what I inferred from the Jed's comments. But still just the existing IS methods suffice. See bitbucket.org/haplav/petsc/src/ab7d5f43fd87d1d57b51b6e7ff8de0ef3e904673/src/dm/impls/plex/petscpartmatpart.c?at=haplav%2Ffeature-petscpartitionermatpartitioning#petscpartmatpart.c-92

Vaclav


More information about the petsc-dev mailing list