Skip to content

[bugfix] AMG::pre deadlock

Nils-Arne Dreier requested to merge nils.dreier/dune-istl:amg_pre_bug into master

I encountered a deadlock in the AMG::pre() method. It occours if Level 0 is redistributed. Then the pre method for Level 0 is not called on rank 0.

This MR changes the behavior to call the pre method only for higher levels (for level 0 it is already called in line 591) and adds a test.

I'm not sure whether pre has to be called for every smoother or for every lhs/rhs. If the latter is the case a proper bugfix would be to change line 626 to

for(; smoother != coarsest; ++smoother, ++lhs, ++rhs)

such that also rank 0 also calls pre for the finest level again.

@markus.blatt: can you explain the exact idea of pre?

Merge request reports