[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