Handling of "BiCGStab stuck" (Defect #429)


Added by Christopher Pinke over 6 years ago. Updated over 6 years ago.


Status:Feedback Start date:12 Feb 2013
Priority:Normal Due date:
Assignee:Matthias Bach % Done:

100%

Category:-
Target version:-

Description

Currently, both version of bicgstab can go "stuck" and trhow an exception:

if(std::abs(test.re) < 1e-25 && std::abs(test.im) < 1e-25 ) {
    //print the last residuum
    logger.fatal() << "\t\t\tsolver stuck at resid:\t" << resid;
    throw SolverStuck(iter, __FILE__, __LINE__);
}

The exception is questionable if for instance the residuum is actually ~1e-23, which is almost under the threshold of the solver precision 1e-23, where the solver would finish successfully anyway!

It may be that lowering the thresholds in the if-statement settles the issue already.
I took the value of 1e-25 from the tmlqcd code, but in the sample input files there one has typically an acceptance threshold of only 1e-20!

Another option would be to check on the deviation of the residuum with respect to the threshold.


bicgstab_stuck.eps (20.2 kB) Christopher Pinke, 12 Feb 2013 01:36 pm

stuck_chains.log (11.7 kB) Christopher Pinke, 12 Feb 2013 01:36 pm


Related issues

related to CL2QCD - Feature #431: Use algoritms::solver functionality in HMC init spinorfie... New 03 Mar 2013
blocked by CL2QCD - Feature #430: Implement retry logic in case solver fails Done 03 Mar 2013

History

Updated by Christopher Pinke over 6 years ago

  • Assignee set to Christopher Pinke
  • Subject changed from BiCGStab to Handling of "BiCGStab stuck"
  • Description set to Currently, both version of bicgstab can go "stuck" and trhow an exc... More

Updated by Christopher Pinke over 6 years ago

I plotted the residua at which the bicgstab got stuck.
Except for some chains all values are below 1e-22, all are below 1e-21.
I also checked again the tmlqcd input files: The acc-precision there is 1e-20!!

Thus I propose to use this value also in our precision (this would speed up everything, too).
Otherwise one should set the threshold in the if-statement lower, perhaps 1e-30.

Updated by Christopher Pinke over 6 years ago

  • Assignee changed from Christopher Pinke to Matthias Bach
  • % Done changed from 0 to 100
  • Status changed from New to Feedback

Also available in: Atom PDF