[Dune] Dynamic load balancing with ALUGrid

Martin Nolte nolte at mathematik.uni-freiburg.de
Fri Oct 26 21:06:13 CEST 2012


Hi Bernd,

I have an educated guess for you (don't blame me, if I'm wrong):

In normal communication, you only communicate data on a certain grid view. Hence 
you can use the index set to address data stored on that grid view.

When doing load balancing, you rather communicate data on the entire hierarchy. 
Therefore, your entity might not be contained an index set (leading to this 
cryptic assertion). So, if you want to communicate data only on a certain grid 
view, you have to add a call to indexSet.contains to the gather / scatter / size 
methods. Usually, fixedSize will be false in such situations (I think ALUGrid 
ignores this anyway, so it should not matter, here).

Just a side note: In my opionion, a normal communicate method exchanging data on 
the entire hierarchy would be nice, too. But alas, this method would naturally 
be "grid().communicate( dataHandle, interface, direction )".

Best,

Martin

On 10/26/2012 01:32 PM, Bernd Flemisch wrote:
> Hey Andreas,
>
> thank you for your fast answer. This indeed solves my second issue. However, the
> first one remains. I attach an updated test file.
>
> Kind regards
> Bernd
>
> On 10/26/2012 01:08 PM, Dedner, Andreas wrote:
>> Hi Bernd
>>
>> You should be able to cast the derived class onto the interface class
>> and that triggers the call to the correct method.
>>
>> Andreas
>>
>> ________________________________________
>> From: dune-bounces+a.s.dedner=warwick.ac.uk at dune-project.org
>> [dune-bounces+a.s.dedner=warwick.ac.uk at dune-project.org] on behalf of Bernd
>> Flemisch [bernd at iws.uni-stuttgart.de]
>> Sent: 26 October 2012 11:53
>> To: Dune
>> Subject: [Dune] Dynamic load balancing with ALUGrid
>>
>> Dear Dune,
>>
>> I try to use dynamic load balancing with ALUGrid. The grid itself gets
>> balanced nicely, but I don't succeed in getting data balanced.
>>
>> From dune/grid/alugrid/3d/grid.hh lines 701ff, I guess that I can pack
>> a "usual" data handle which is used for communication into a
>> ALUGridLoadBalanceDataHandle and call loadBalance with that handle. My
>> initial attempt to do this fails with
>> test-dynamiclb:
>> ../../../dune/grid/alugrid/common/defaultindexsets.hh:218:
>> Dune::DefaultIndexSet<GridImp, IteratorImp>::IndexType
>> Dune::DefaultIndexSet<GridImp, IteratorImp>::index(const typename
>> GridImp::Codim<cd>::Entity&) const [with int cd = 0; GridImp =
>> Dune::ALU3dGrid<(Dune::ALU3dGridElementType)7u>; IteratorImp =
>> Dune::EntityIterator<0, const
>> Dune::ALU3dGrid<(Dune::ALU3dGridElementType)7u>,
>> Dune::ALU3dGridLeafIterator<0, (Dune::PartitionIteratorType)4u, const
>> Dune::ALU3dGrid<(Dune::ALU3dGridElementType)7u> > >;
>> Dune::DefaultIndexSet<GridImp, IteratorImp>::IndexType = unsigned int;
>> typename GridImp::Codim<cd>::Entity = Dune::Entity<0, 3, const
>> Dune::ALU3dGrid<(Dune::ALU3dGridElementType)7u>,
>> Dune::ALU3dGridEntity>]: Assertion `indexContainer( cd )[ en ].index()
>> >= 0' failed.
>>
>> I attach my effort, where I use a data handle copied from the
>> grid-howto. It would be great if you could take a look.
>>
>> I have a second issue: I guess that I should be able to call loadBalance
>> directly with a usual data handle, so that grid.hh lines 701ff takes
>> care of it and packs it for me into a ALUGridLoadBalanceDataHandle
>> before sending it to the real loadBalance method. However, since my data
>> handle is only inherited from CommDataHandleIF, the packing routine is
>> not triggered but the real loadBalance method is called directly leading
>> to a compilation error. How can I trigger the execution of the packing
>> routine for such a derived data handle?
>>
>> Thank you for having a look. Kind regards
>> Bernd
>>
>> --
>> _____________________________________________________________________
>>
>> Bernd Flemisch phone: +49 711 685 69162
>> IWS, Universität Stuttgart fax: +49 711 685 60430
>> Pfaffenwaldring 61 email: bernd at iws.uni-stuttgart.de
>> D-70569 Stuttgart url: www.hydrosys.uni-stuttgart.de
>> _____________________________________________________________________
>
>
>
>
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune

-- 
Dr. Martin Nolte <nolte at mathematik.uni-freiburg.de>

Universität Freiburg                                   phone: +49-761-203-5630
Abteilung für angewandte Mathematik                    fax:   +49-761-203-5632
Hermann-Herder-Straße 10
79104 Freiburg, Germany




More information about the Dune mailing list