I would like to solve a linear system of the form $ABx=b$ in parallel, where $A$ and $B$ are large, sparse matrices. Currently, I am forming the system matrix $AB$ explicitly, but I would like to avoid the expensive sparse matrix-matrix product. I can think of two alternatives, but I have questions about each of them.
First, I could implement the mapping $x\mapsto ABx$ as a sequence of two sparse matrix-vector products and then apply a Krylov method. While this is easy to set up, I am worried that out-of-the-box preconditioners like (S)SOR or ILU preconditioners may no longer work.
Second, I could solve the system $ABx=b$ by first solving $Ay=b$ followed by $Bx=y$, since both matrices are square. However, I am not sure how to choose the tolerances in this case. It seems that any tolerance $\varepsilon$ for the original system can be achieved by choosing tolerances $\varepsilon_1$ for the system $Ay=b$ and $\varepsilon_2$ for the system $Bx=y$ such that
\begin{align} \|b-ABx\| &=\|b-Ay+Ay-ABx\|\\ &\le\|b-Ax\|+\|A\|\|y-Bx\|\\ &< \varepsilon_1+\|A\|\varepsilon_2\\ &< \varepsilon, \end{align}
but this does not seem practical, because $\|A\|$ is unknown, and $\varepsilon_2$ would likely be very small.
Are you aware of any standard methods to solve this kind of linear system?