Page 1 of 1

What's the role of restart in PGMRES?

Posted: Tue Jun 02, 2015 1:14 pm
by hsahasra
Hi,

I have been experimenting solving a linear system with PGMRES+Jacobi preconditioner. The solver diverges with default restart. When I set the restart at 400, it converges in ~700 iterations. The number of iterations increases if I increase or decrease the restart from 400. How should I decide what restart is needed? Does the restart parameter change from system to system?

Quantity in brackets after PGMRES is the restart value. E.g. PGMRES(30) is with restart=30.

%=============================================================%
% PGMRES(30) solver summary:
% initial residual: 2.000000e+02
% iterations: 1000
% exact final residual: 4.569463e+00
% runtime: 1.0274 sec
%=============================================================%

%=============================================================%
% PGMRES(100) solver summary:
% initial residual: 2.000000e+02
% iterations: 1000
% exact final residual: 9.811325e-03
% runtime: 2.7982 sec
%=============================================================%

%=============================================================%
% PGMRES(400) solver summary:
% initial residual: 2.000000e+02
% iterations: 697
% exact final residual: 1.183331e-09
% runtime: 6.5171 sec
%=============================================================%

%=============================================================%
% PGMRES(500) solver summary:
% initial residual: 2.000000e+02
% iterations: 761
% exact final residual: 1.037513e-09
% runtime: 8.2672 sec
%=============================================================%

%=============================================================%
% PGMRES(350) solver summary:
% initial residual: 2.000000e+02
% iterations: 871
% exact final residual: 8.002018e-10
% runtime: 7.2320 sec
%=============================================================%


Thanks,
Harshad

Re: What's the role of restart in PGMRES?

Posted: Wed Jun 17, 2015 2:01 pm
by hartwig anzt
Dear Harshad,

the restart parameter determines the dimension of the Krylov space before restarting. Please take a look at the literature for more theoretical background: http://www-users.cs.umn.edu/~saad/IterM ... _2ndEd.pdf
Small restart values result in low memory cost, faster loop execution (little orthogonalization effort) and small rounding effects. Larger Krylov subspace dimensions often result in faster convergence. Usually, one chooses restart values between 30 - 50. However, there is no general rule which dimension gives the best results for a specific system. (Otherwise, it would not be an option in MAGMA...)

Hope this helps.

Hartwig