The multi-preconditioned conjugate gradient (MPCG) method is a generalization of the preconditioned conjugate gradient (PCG) algorithm to allow for multiple preconditioners, which are automatically combined in an optimal dynamic way thoughout the iterations.
Here is a preprint of the paper: bridsongreif-2005-multipcg.pdf
Here is an example MATLAB function for running MPCG: mpcg.m