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

Matthew Knepley knepley at gmail.com
Fri Sep 11 15:06:53 CDT 2020


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


More information about the petsc-users mailing list