The suite presents two separate interfaces to all the iterative solvers, a direct one, aoclsparse_itsol_d_solve(),
(aoclsparse_itsol_s_solve(), aoclsparse_itsol_c_solve(), aoclsparse_itsol_z_solve())
and a reverse communication (RCI) one aoclsparse_itsol_d_rci_solve() (aoclsparse_itsol_s_rci_solve()
aoclsparse_itsol_c_rci_solve(), aoclsparse_itsol_z_rci_solve()) While the underlying algorithms are exactly the same,
the difference lies in how data is communicated to the solvers.
The direct communication interface expects to have explicit access to the coefficient matrix \(A\). On the other hand, the reverse communication interface makes no assumption on the matrix storage. Thus when the solver requires some matrix operation such as a matrix-vector product, it returns control to the user and asks the user perform the operation and provide the results by calling again the RCI solver.