trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.21k stars 564 forks source link

Ifpack2: Insufficient matrix space allocated in Iluk_graph #6309

Closed kddevin closed 4 years ago

kddevin commented 4 years ago

Bug Report

@trilinos/ifpack2 @trilinos/tpetra

Description

@mperego reports insufficient matrix nonzeros allocated in Iluk_graph with RILUK when Tpetra's DynamicProfile allocation is disabled.

The report is in #6163, but the issue is different from the export issue in #6163, so I am creating a separate issue.

We suspect the heuristic in #5511 is insufficient in some cases. We need to modify the heuristic and add a capability to resize and start over if an insert fails.

6163 #5510 #5511

mperego commented 4 years ago

Here are Ifpack2 options we are using (through Stratimikos)

              Preconditioner Types:
                Ifpack2:
                  Overlap: 2
                  Prec Type: RILUK
                  Ifpack2 Settings:
                    'fact: drop tolerance': 0.00000000e+00
                    'fact: iluk level-of-fill': 1

also I posted the matrix on Blake: /ascldap/users/mperego/mat.mm

This test is run in serial (1 mpi process). Note that setting the level-of-fill to 0 fixes the issue.

kddevin commented 4 years ago

Thanks, @mperego ! @jhux2 in which Ifpack2 test could I use the matrix provided by @mperego to reproduce the error? Thanks!

jhux2 commented 4 years ago

@kddevin It’s the test Ifpack2UnitTest_SingleProcessRILUK.cpp. That test generates a matrix and then calls RILUK with different fill levels.

Sent with GitHawk

kddevin commented 4 years ago

@jhux2 Does is make sense to run a similar test with multiple ranks? Is there anything special about the SingleProcess case? Thanks.

kddevin commented 4 years ago

@mperego #6340 should fix this issue. Would you please retest with your Albany problem and report results here? Thanks.

jhux2 commented 4 years ago

@jhux2 Does is make sense to run a similar test with multiple ranks? Is there anything special about the SingleProcess case? Thanks.

@kddevin Sorry for my late response. I created the single process test because RILUK only ever runs in serial, but it wasn't being tested explicitly. Additive Schwarz is tested separately with multiple ranks.

mperego commented 4 years ago

@mperego #6340 should fix this issue. Would you please retest with your Albany problem and report results here? Thanks.

I retested it and it fixes the issue. Thanks!!

kddevin commented 4 years ago

Thanks, @mperego.