[Dune] Repartitioning/dynamic load balancing in Dune

Dedner, Andreas A.S.Dedner at warwick.ac.uk
Wed May 13 15:00:03 CEST 2020


I don't think there is a way at the moment that will work with both UG and ALUGrid.
The ALUGrid interface methods are described here
https://arxiv.org/pdf/1407.6954.pdf
on page 21. It doesn't use a vector but a callback, i.e., a callable which will be invoked for each macro element of a given partition. The approach in the file you mentioned makes less sense for ALUGrid because the partition  vector (as far as I can tell) is index with the leaf index set but ALU can't partition on that level (or one has to guarantee that all children of a macro element have the same destination rank). The ALU version is more general because it could be called also on each leaf element by UG and if the user has computed the partition for the macro elements then getting a destination of the children is easy. If the partition was computed for the leafs and is to be used for ALUGrid some algorithm would have to be added by the user.
________________________________
From: Dune <dune-bounces at lists.dune-project.org> on behalf of Timo Koch <timo.koch at iws.uni-stuttgart.de>
Sent: 13 May 2020 13:34
To: dune at lists.dune-project.org <dune at lists.dune-project.org>
Subject: [Dune] Repartitioning/dynamic load balancing in Dune

Dear Dune developers and users,

we are currently looking into a geothermal application case where we could profit from dynamic load balancing to optimise the processor load in parallel MPI simulations.
As far as I can see from the docs dynamic load balancing should be possible with dune-uggrid (horizontal and vertical) and dune-alugrid (horizontal).
However, there also has been a discussion on the Dune Dev Meeting 2018 (https://www.dune-project.org/community/meetings/2018-11-devmeeting/) about adding a “repartition” method to the grid interface, so I’m not quite sure what is currently working.

I found https://gitlab.dune-project.org/core/dune-grid/-/blob/master/dune/grid/utility/parmetisgridpartitioner.hh which seems to be grid agnostic and the corresponding test just call
grid->loadBalance(part, 0);
where part seems to be just a vector of target ranks for each entity.
Unfortunately, we can’t use ParMETIS due to the license restrictions.

My questions would be
1) Is the way implemented in the loadbalance test in dune-grid the way to currently do dynamic load balancing and will it work for dune-uggrid and dune-alugrid? Possible restrictions?
2) What is the rational behind the new “repartition” interface and which problems will it solve?
3) Does anyone have accessible/shareable application or testing code that uses dynamic load balancing via the dune grid interface? Ideally not using ParMETIS but e.g. Scotch or something else.

Already thanks for any answers in advance!

Timo


--
_________________________________________________

Timo Koch                                      phone: +49 711 685 64676
IWS, Universität Stuttgart                  fax:   +49 711 685 60430
Pfaffenwaldring 61         email: timo.koch at iws.uni-stuttgart.de<mailto:timo.koch at iws.uni-stuttgart.de>
D-70569 Stuttgart             url: www.iws.uni-stuttgart.de/en/lh2/<http://www.iws.uni-stuttgart.de/en/lh2/>
_________________________________________________

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20200513/65b815a4/attachment.htm>


More information about the Dune mailing list