Implement option to choose which inverter to use in the Pbp calculation (Feature #731)
It was notice that in the pure Wilson formulation the BICGSTAB solver in the pbp calculation is performing much better than the CG solver. It makes then sense to give to the user the possibility to choose which solver to use in the pbp calculation (so far the solver used is the same as that used in the generation executable).
Even if, in principle, it would be good to do the same in all formulations, it has more priority in the Wilson case, where the operator that is inverted in the pbp calculation is different from that inverted during the generation of configurations. In other formulations (e.g. staggered fermions) it is not the case and this modification can be postponed.
Some comparison of the performances of the two solvers in the pure Wilson case:
- k1550 nt6 ns20 beta5.5300 conf.31000 --sourcetype=volume --sourcecontent=gaussian --num_sources=16
SOLVER [CG] : CG completed 310 iterations in 966 ms
SOLVER [CG] : Performance [FLOPS]: 56.27799987793 GFlops. Performance after warmup: 56.764999389648 Gflops.
SOLVER [BICGSTAB] : Solver completed in 463 ms @ 40.590999603271 Gflops. Performed 101 iterations
- k1650 nt6 ns24 beta5.3350 conf.17000 --sourcetype=volume --sourcecontent=gaussian --num_sources=16
SOLVER [CG] : CG completed 1280 iterations in 5897 ms
SOLVER [CG] : Performance [FLOPS]: 65.652000427246 GFlops. Performance after warmup: 65.916000366211 Gflops.
SOLVER [BICGSTAB] : Solver completed in 1469 ms @ 52.662998199463 Gflops. Performed 241 iterations
So far, as temporary workaround in order to get the better performance, the inverter in the pbp calculation has been forced to be the BICGSTAB. This has to be changed and implemented properly!
- Status changed from New to In Progress
- Assignee changed from Alessandro Sciarra to Christopher Pinke