I am currently experimenting some troubles using Adaptive-Spike with sparse preconditioners while it works perfectly with dense preconditioners.
I am using the library to solve general sparse linear systems with preconditioners almost always sparse within the band.
When I set my sparse preconditioner in the dense format (pre.format='D'), it works but leads to poor performances (due to comunication and computation overheads). When I set my preconditioner in the CSR format (pre.format='S'), the library seems to use an identity matrix as the preconditioner.
You will find enclosed two examples to illustrate this. These examples
are special cases and use M=A.
sets preconditioner in the dense banded format and bicgstab do not need
to iterate to converge as expected. Example_2 sets the same preconditioner in the CSR format and bicgstab need two iterations
to converge. Results are exactly the same
by setting identity matrix as the preconditioner. Obviously, bicgstab
fails to converge in more realistic cases.
I don't understand this behavior (documentation states that it is possible to define sparse preconditionners) and have no idea where I am wrong.
Advices would be helpful.