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

Matthew Knepley knepley at gmail.com
Fri Sep 11 15:16:57 CDT 2020


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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200911/b8c3fecb/attachment-0001.html>


More information about the petsc-users mailing list