[Trilinos-Users] [EXTERNAL] Re: ilut setting

Cyr, Eric C eccyr at sandia.gov
Thu Sep 19 07:42:52 MDT 2013


It is already an inverse factory in Teko. AztecOO is wrapped by
Stratimikos. Anything in Stratimikos is accessible to Teko (This is how
you access Ifpack for instance). If you go to the Stratimikos page and
look up the AztecOO parameters you should be able to modify those to be
accessible by Teko. Let me know if you need more help.

Regarding the ILUT in Ifpack. I have to say that I don't use it and think
there may be problems with its implementation. The ILU in Ifpack is solid
and we get a lot of use out it.

Eric

On 9/19/13 4:43 AM, "Hoang Giang Bui" <hgbk2008 at gmail.com> wrote:

>That's fine. I can use AztecOO with ilut since it works well in my case.
>In fact, I used Ifpack as sub-preconditioner for my block
>preconditioner. This block preconditioner doesn't work since Ifpack_ILUT
>failed. It is not sure that AztecOO ILUT will be success if it's applied
>as sub-preconditioners though. However I wonder if there is a way to
>introduce AztecOO as an InverseFactory in Teko?
>
>Best regards
>Giang Bui
>
>
>
>On 09/18/2013 07:16 PM, Erik Boman wrote:
>> Unfortunately, the incomplete factorization parameters are not well
>> documented so looking at the source code is best. Yes, Ifpack_ILUT
>> interprets "ilut level-of-fill" to be the ratio of nonzeros in the
>> preconditioner relative to the original matrix, so a value of 1.0 or a
>> bit higher is reasonable. (Note: 1.0 in Ifpack roughly corresponds to
>> 0 in AztecOO.) If you set it to 50, you will in most cases compute a
>> complete factorization (but in a very slow way!). As a sanity check,
>> you can try using Amesos (by default, KLU) as your subdomain solver.
>>
>> There are several other parameters in Ifpack that may be helpful. For
>> example, the absolute and relative threshold parameters may make your
>> preconditioner more robust. Confusingly, these prescribe a diagonal
>> perturbation (aka Manteuffel shift).
>>
>> Erik
>>
>> Hoang Giang Bui wrote:
>>> Hi Chris
>>>
>>> I didn't see the range of value of ilut level of fill in Ifpack user
>>> guide yet. But looking in the code of Ifpack_ILUT, I'm quite sure
>>> that the level of fill indicates the number of nonzeros in the
>>> preconditioner compare to initial nonzeros. Therefore its value can
>>> be bigger than 1.
>>>
>>> Giang Bui
>>>
>>>
>>> On 09/18/2013 04:43 AM, Chris Jackson wrote:
>>>>
>>>> I don¹t know if this applies to the one you are talking about, but I
>>>> recall that with one of the ILUT preconditioners the fill value is
>>>> expected to be between 0.0 and 1.0.  1.0 meant essentially we were
>>>> finding the inverse of the matrix.  Before we figured that out we
>>>> were always astounded that BiCGStab was converging in 2 iterationsŠ
>>>>
>>>>
>>>>
>>>> Chris Jackson
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> *From:* trilinos-users-bounces at software.sandia.gov
>>>> [mailto:trilinos-users-bounces at software.sandia.gov] *On Behalf Of
>>>> *Hoang Giang Bui
>>>> *Sent:* Tuesday, September 17, 2013 6:28 PM
>>>> *To:* Erik Boman
>>>> *Cc:* trilinos-users at software.sandia.gov
>>>> *Subject:* Re: [Trilinos-Users] ilut setting
>>>>
>>>>
>>>>
>>>> Hi Erik
>>>>
>>>> I tried to increase "fact: ilut level-of-fill" to 50.0 and it still
>>>> doesn't converge. In fact, with this value the preconditioner take
>>>> very long to compute. Is there other option we can set for Ifpack
>>>>ILUT?
>>>>
>>>> Giang Bui
>>>>
>>>>
>>>>
>>>> On Tue, Sep 17, 2013 at 8:01 PM, Erik Boman <egboman at sandia.gov
>>>> <mailto:egboman at sandia.gov>> wrote:
>>>>
>>>> Giang Bui,
>>>>
>>>> You will not get exactly the same answer because the ILUT
>>>> implementations are different in AztecOO and Ifpack. Also, the
>>>> meaning of "fill" may be slightly different. Try increase the value
>>>> of  "fact: ilut level-of-fill" in the Ifpack parameter to see if you
>>>> can make it converge.
>>>>
>>>> Erik
>>>>
>>>> Hoang Giang Bui wrote:
>>>>
>>>> Dear Trilinos developers,
>>>>
>>>> Is there difference between 2 settings:
>>>>
>>>> solver_parameters.set("AZ_solver", "AZ_bicgstab")
>>>> solver_parameters.set("AZ_kspace", 1000)
>>>> solver_parameters.set("AZ_output", 100)
>>>> solver_parameters.set("AZ_precond", "AZ_dom_decomp")
>>>> solver_parameters.set("AZ_subdomain_solve", "AZ_ilut")
>>>> solver_parameters.set("AZ_drop", 0.0)
>>>> solver_parameters.set("AZ_ilut_fill", 10.0)
>>>> aztec_solver.SetParameters(solver_parameter, true);
>>>>
>>>> And:
>>>> solver_parameters.set("AZ_solver", "AZ_bicgstab")
>>>> solver_parameters.set("AZ_kspace", 1000)
>>>> solver_parameters.set("AZ_output", 100)
>>>> solver_parameters.set("AZ_precond", "AZ_none")
>>>> aztec_solver.SetParameters(solver_parameter, true);
>>>> IFPreconditionerType = "ILUT"
>>>> preconditioner_parameters.set("fact: ilut level-of-fill", 10.0);
>>>> preconditioner_parameters.set("fact: drop tolerance", 0.0);
>>>> overlap_level = 1
>>>> mPrec = Teuchos::rcp(Factory.Create(IFPreconditionerType, &rA,
>>>> overlap_level));
>>>> mPrec->SetParameters(preconditioner_parameters);
>>>> aztec_solver.SetPrecOperator(&*(mpPrec->GetOperator()))
>>>>
>>>> I thought it all resulted in Additive-Schwartz preconditioner with
>>>> ILUT as local subdomain preconditioner. But it gives different
>>>> performance. The first setting works well but the second failed to
>>>> converge.
>>>>
>>>> Best regards
>>>> Giang Bui
>>>>
>>>> _______________________________________________
>>>> Trilinos-Users mailing list
>>>> Trilinos-Users at software.sandia.gov
>>>> <mailto:Trilinos-Users at software.sandia.gov>
>>>> http://software.sandia.gov/mailman/listinfo/trilinos-users
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> With Best Regards !
>>>> Giang Bui
>>>>
>>>> To learn and to excel
>>>>
>>>
>>
>
>_______________________________________________
>Trilinos-Users mailing list
>Trilinos-Users at software.sandia.gov
>http://software.sandia.gov/mailman/listinfo/trilinos-users




More information about the Trilinos-Users mailing list