Hi Denis,
Thank you very much for your guidance. Sorry it took me a while to get back to you on this thread.
I did try reusing the precond early on when you showed me how, this was only with OpenMP/CPU.
On the CPU I did not get an advantage because my matrices are always growing in size, I attempted to work with a matrix that had "additional" ones in the diagonal for future reuse when the system was larger, but I could not make this competitive with rebuilding the precond.
You have a point, if I were using AMG for solving on the GPU, it is likely that reusing the precond could pay off because of hte high speed in the solve part :). I hope I am understanding what you are suggesting. This would definitely make sense for typical solutions where we need to reduce the residual by several orders, but it may not in my current case where I only need 0.1, and therefore I am not using AMG, actually here comes the best part:
When you pointed me to the documentation, I asked myself why am I using spai0, perhaps I can save time not using anything, (I take case of starting from a symmetric PD matrix with all 1s in the diagonal),
Before I was using:
amgcl::relaxation::as_preconditioner<PrecBackend, amgcl::relaxation::spai0>,
amgcl::solver::bicgstab<SolvBackend>
And I changed to:
amgcl::preconditioner::dummy<PrecBackend>,
amgcl::solver::bicgstab<SolvBackend>
and now I am saving ~ 20% of wall time in the solution :)), just with OpenMP, I have not had a chance of tryin on a GPU.
I will try on a GPU next weekend.
I have more questions on GPUs that I will send on a seperate thread.
Thanks again,
Cheers