[petsc-users] How to activate the modified Gram-Schmidt orthogonalization process in Fortran?

Matthew Knepley knepley at gmail.com
Fri Sep 11 15:39:44 CDT 2020


On Fri, Sep 11, 2020 at 4:38 PM Zhuo Chen <chenzhuotj at gmail.com> wrote:

> Hi Matthew,
>
> I am sorry if I misunderstood. Do you mean the modified Gram-Schmidt will
> be working for the first time but not for the subsequent times or the
> reverse? I have checked the output of a complete loop, and it print out the
> same lines, i.e.,
>
> KSP Object: 4 MPI processes
>   type: gmres
>     restart=30, using Modified Gram-Schmidt Orthogonalization
>     happy breakdown tolerance 1e-30
>   maximum iterations=10000, initial guess is zero
>   tolerances:  relative=1e-08, absolute=1e-50, divergence=10000.
>   left preconditioning
>   using PRECONDITIONED norm type for convergence test
>
>  in each loop.
>

If you put the SetValue() call before the SetFromOptions() call, everything
will be fine.

The first time through your loop, the options will not be in the database,
and thus you would not get what you expect.

  Thanks,

     Matt


> On Fri, Sep 11, 2020 at 2:17 PM Matthew Knepley <knepley at gmail.com> wrote:
>
>> On Fri, Sep 11, 2020 at 4:10 PM Zhuo Chen <chenzhuotj at gmail.com> wrote:
>>
>>> Hi Matthew,
>>>
>>> Yes. These four lines are in a do while loop.
>>>
>>
>> The first time through, it will not work :)
>>
>>   Thanks,
>>
>>     Matt
>>
>>
>>> On Fri, Sep 11, 2020 at 2:07 PM Matthew Knepley <knepley at gmail.com>
>>> wrote:
>>>
>>>> On Fri, Sep 11, 2020 at 3:56 PM Zhuo Chen <chenzhuotj at gmail.com> wrote:
>>>>
>>>>> Hi Matthew,
>>>>>
>>>>> Yes, if use
>>>>>
>>>>> call KSPSetType(ksp,KSPGMRES,ierr);CHKERRQ(ierr)
>>>>> call KSPSetFromOptions(ksp,ierr);CHKERRQ(ierr)
>>>>> call
>>>>> PetscOptionsSetValue(PETSC_NULL_OPTIONS,'-ksp_gmres_modifiedgramschmidt','1',ierr);CHKERRQ(ierr)
>>>>> call
>>>>> PetscOptionsSetValue(PETSC_NULL_OPTIONS,'-ksp_view','',ierr);CHKERRQ(ierr)
>>>>>
>>>>
>>>> Are you running in a loop?
>>>>
>>>>   Thanks,
>>>>
>>>>      Matt
>>>>
>>>>
>>>>> to see if the modified Gram-Schmidt process is actually active. The
>>>>> output is
>>>>>
>>>>> KSP Object: 4 MPI processes
>>>>>   type: gmres
>>>>>     restart=30, using Modified Gram-Schmidt Orthogonalization
>>>>>     happy breakdown tolerance 1e-30
>>>>>   maximum iterations=10000, initial guess is zero
>>>>>   tolerances:  relative=1e-11, absolute=1e-50, divergence=10000.
>>>>>   left preconditioning
>>>>>   using PRECONDITIONED norm type for convergence test
>>>>>
>>>>> I think that means calling PetscOptionsSetValue()
>>>>> after KSPSetFromOptions() works. Correct me if I am wrong.
>>>>>
>>>>> Best.
>>>>>
>>>>> On Fri, Sep 11, 2020 at 1:31 PM Matthew Knepley <knepley at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> On Fri, Sep 11, 2020 at 3:05 PM Zhuo Chen <chenzhuotj at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Hong,
>>>>>>>
>>>>>>> Thank you very much for the plan.
>>>>>>>
>>>>>>> Though it may be obvious to many Petsc gurus. I would like to
>>>>>>> summarize my solution to activate the modified Gram-Schmidt
>>>>>>> orthogonalization process in Fortran now. It may help some new Petsc users.
>>>>>>>
>>>>>>> Option 1: append the -ksp_gmres_modifiedgramschmidt at runtime, the
>>>>>>> code would look like
>>>>>>>
>>>>>>> call KSPSetType(ksp,KSPGMRES,ierr);CHKERRQ(ierr)
>>>>>>> call KSPSetFromOptions(ksp,ierr);CHKERRQ(ierr)
>>>>>>>
>>>>>>> and to run the program, use
>>>>>>>
>>>>>>> mpiexec -np 2 ./run -ksp_gmres_modifiedgramschmidt
>>>>>>>
>>>>>>> Option 2: use PetscOptionsSetValue()
>>>>>>>
>>>>>>> call KSPSetType(ksp,KSPGMRES,ierr);CHKERRQ(ierr)
>>>>>>> call KSPSetFromOptions(ksp,ierr);CHKERRQ(ierr)
>>>>>>> call
>>>>>>> PetscOptionsSetValue(PETSC_NULL_OPTIONS,'-ksp_gmres_modifiedgramschmidt','1',ierr);CHKERRQ(ierr)
>>>>>>>
>>>>>>
>>>>>> Does it work if you call SetValue() after SetFromOptions()? I would
>>>>>> not think that would work.
>>>>>>
>>>>>>   Thanks,
>>>>>>
>>>>>>      Matt
>>>>>>
>>>>>>
>>>>>>> and to run the program, use
>>>>>>>
>>>>>>> mpiexec -np 2 ./run
>>>>>>>
>>>>>>> Best.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Sep 11, 2020 at 9:05 AM Zhang, Hong <hzhang at mcs.anl.gov>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Zhuo,
>>>>>>>> I'll try to get it done after the incoming release. My hands are
>>>>>>>> full with more urgent tasks at moment. I'll let you know after I'm done.
>>>>>>>> Thanks for your patience.
>>>>>>>> Hong
>>>>>>>>
>>>>>>>> ------------------------------
>>>>>>>> *From:* Zhuo Chen <chenzhuotj at gmail.com>
>>>>>>>> *Sent:* Thursday, September 10, 2020 8:41 PM
>>>>>>>> *To:* Zhang, Hong <hzhang at mcs.anl.gov>
>>>>>>>> *Cc:* petsc-users at mcs.anl.gov <petsc-users at mcs.anl.gov>
>>>>>>>> *Subject:* Re: [petsc-users] How to activate the modified
>>>>>>>> Gram-Schmidt orthogonalization process in Fortran?
>>>>>>>>
>>>>>>>> Hi Hong,
>>>>>>>>
>>>>>>>> According to that very old thread, KSPGMRESSetOrthogonalization was
>>>>>>>> not implemented in Fortran. I did as you suggested and the compiler will
>>>>>>>> tell me
>>>>>>>>
>>>>>>>> undefined reference to `kspgmressetorthogonalization_'
>>>>>>>>
>>>>>>>> I think I will use the -ksp_gmres_modifiedgramschmidt method. Thank
>>>>>>>> you so much!
>>>>>>>>
>>>>>>>> On Thu, Sep 10, 2020 at 7:32 PM Zhang, Hong <hzhang at mcs.anl.gov>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Zhuo,
>>>>>>>> Call
>>>>>>>> KSPSetType(ksp,KSPGMRES);
>>>>>>>>
>>>>>>>> KSPGMRESSetOrthogonalization(ksp,KSPGMRESModifiedGramSchmidtOrthogonalization);
>>>>>>>> Hong
>>>>>>>>
>>>>>>>> ------------------------------
>>>>>>>> *From:* Zhuo Chen <chenzhuotj at gmail.com>
>>>>>>>> *Sent:* Thursday, September 10, 2020 8:17 PM
>>>>>>>> *To:* Zhang, Hong <hzhang at mcs.anl.gov>
>>>>>>>> *Cc:* petsc-users at mcs.anl.gov <petsc-users at mcs.anl.gov>
>>>>>>>> *Subject:* Re: [petsc-users] How to activate the modified
>>>>>>>> Gram-Schmidt orthogonalization process in Fortran?
>>>>>>>>
>>>>>>>> Hi Hong,
>>>>>>>>
>>>>>>>> Thank you very much for your help.
>>>>>>>>
>>>>>>>> It seems that if I simply append -ksp_gmres_modifiedgramschmidt the
>>>>>>>> warning goes away. However
>>>>>>>> KSPGMRESSetOrthogonalization(ksp,KSPGMRESModifiedGramSchmidtOrthogonalization,ierr)
>>>>>>>> has another issue.
>>>>>>>>
>>>>>>>> Error: Symbol ‘kspgmresmodifiedgramschmidtorthogonalization’ at (1)
>>>>>>>> has no IMPLICIT type
>>>>>>>>
>>>>>>>> Is it because the argument is too long? I am using gcc 8.4.0
>>>>>>>> instead of ifort
>>>>>>>>
>>>>>>>> On Thu, Sep 10, 2020 at 7:08 PM Zhang, Hong <hzhang at mcs.anl.gov>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Zhuo,
>>>>>>>> Run your code with option '-ksp_gmres_modifiedgramschmidt'. For
>>>>>>>> example,
>>>>>>>> petsc/src/ksp/ksp/tutorials
>>>>>>>> mpiexec -n 2 ./ex2 -ksp_view -ksp_gmres_modifiedgramschmidt
>>>>>>>> KSP Object: 2 MPI processes
>>>>>>>>   type: gmres
>>>>>>>>     restart=30, using Modified Gram-Schmidt Orthogonalization
>>>>>>>>     happy breakdown tolerance 1e-30
>>>>>>>>   maximum iterations=10000, initial guess is zero
>>>>>>>>   tolerances:  relative=0.000138889, absolute=1e-50,
>>>>>>>> divergence=10000.
>>>>>>>>   left preconditioning
>>>>>>>>   using PRECONDITIONED norm type for convergence test
>>>>>>>> PC Object: 2 MPI processes
>>>>>>>>   type: bjacobi
>>>>>>>> ...
>>>>>>>>
>>>>>>>> You can
>>>>>>>> call KSPGMRESSetOrthogonalization(ksp,KSPGMRESModifiedGramSchmidtOrthogonalization)
>>>>>>>> in your program.
>>>>>>>>
>>>>>>>> Hong
>>>>>>>>
>>>>>>>> ------------------------------
>>>>>>>> *From:* petsc-users <petsc-users-bounces at mcs.anl.gov> on behalf of
>>>>>>>> Zhuo Chen <chenzhuotj at gmail.com>
>>>>>>>> *Sent:* Thursday, September 10, 2020 7:52 PM
>>>>>>>> *To:* petsc-users at mcs.anl.gov <petsc-users at mcs.anl.gov>
>>>>>>>> *Subject:* [petsc-users] How to activate the modified Gram-Schmidt
>>>>>>>> orthogonalization process in Fortran?
>>>>>>>>
>>>>>>>> Dear Petsc users,
>>>>>>>>
>>>>>>>> I found an ancient thread discussing this problem.
>>>>>>>>
>>>>>>>>
>>>>>>>> https://lists.mcs.anl.gov/pipermail/petsc-users/2011-October/010607.html
>>>>>>>>
>>>>>>>> However, when I add
>>>>>>>>
>>>>>>>> call KSPSetType(ksp,KSPGMRES,ierr);CHKERRQ(ierr)
>>>>>>>> call
>>>>>>>> PetscOptionsSetValue(PETSC_NULL_OPTIONS,'-ksp_gmres_modifiedgramschmidt','1',ierr);CHKERRQ(ierr)
>>>>>>>>
>>>>>>>> the program will tell me
>>>>>>>>
>>>>>>>> WARNING! There are options you set that were not used!
>>>>>>>> WARNING! could be spelling mistake, etc!
>>>>>>>> There is one unused database option. It is:
>>>>>>>> Option left: name:-ksp_gmres_modifiedgramschmidt value: 1
>>>>>>>>
>>>>>>>> I would like to know the most correct way to activate the modified
>>>>>>>> Gram-Schmidt orthogonalization process in Fortran. Thank you very much!
>>>>>>>>
>>>>>>>> Best regards.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Zhuo Chen
>>>>>>>> Department of Physics
>>>>>>>> University of Alberta
>>>>>>>> Edmonton Alberta, Canada T6G 2E1
>>>>>>>> http://www.pas.rochester.edu/~zchen25/
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Zhuo Chen
>>>>>>>> Department of Physics
>>>>>>>> University of Alberta
>>>>>>>> Edmonton Alberta, Canada T6G 2E1
>>>>>>>> http://www.pas.rochester.edu/~zchen25/
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Zhuo Chen
>>>>>>>> Department of Physics
>>>>>>>> University of Alberta
>>>>>>>> Edmonton Alberta, Canada T6G 2E1
>>>>>>>> http://www.pas.rochester.edu/~zchen25/
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Zhuo Chen
>>>>>>> Department of Physics
>>>>>>> University of Alberta
>>>>>>> Edmonton Alberta, Canada T6G 2E1
>>>>>>> http://www.pas.rochester.edu/~zchen25/
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> What most experimenters take for granted before they begin their
>>>>>> experiments is infinitely more interesting than any results to which their
>>>>>> experiments lead.
>>>>>> -- Norbert Wiener
>>>>>>
>>>>>> https://www.cse.buffalo.edu/~knepley/
>>>>>> <http://www.cse.buffalo.edu/~knepley/>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Zhuo Chen
>>>>> Department of Physics
>>>>> University of Alberta
>>>>> Edmonton Alberta, Canada T6G 2E1
>>>>> http://www.pas.rochester.edu/~zchen25/
>>>>>
>>>>
>>>>
>>>> --
>>>> What most experimenters take for granted before they begin their
>>>> experiments is infinitely more interesting than any results to which their
>>>> experiments lead.
>>>> -- Norbert Wiener
>>>>
>>>> https://www.cse.buffalo.edu/~knepley/
>>>> <http://www.cse.buffalo.edu/~knepley/>
>>>>
>>>
>>>
>>> --
>>> Zhuo Chen
>>> Department of Physics
>>> University of Alberta
>>> Edmonton Alberta, Canada T6G 2E1
>>> http://www.pas.rochester.edu/~zchen25/
>>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>
>
> --
> Zhuo Chen
> Department of Physics
> University of Alberta
> Edmonton Alberta, Canada T6G 2E1
> http://www.pas.rochester.edu/~zchen25/
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200911/ab1961e6/attachment-0001.html>


More information about the petsc-users mailing list