To use CG to solve Ax=b, A must be symmetric and positive definite. In other short recurrence methods, other properties of A may be required or desirable, but we will not exploit these properties explicitly here.
Most often, CG is used in combination with some kind of preconditioning [79,4,97]. This means that the matrix A is implicitly multiplied by an approximation of . Usually, K is constructed to be an approximation of A, and so that Ky=z is easier to solve than Ax=b. Unfortunately, a popular class of preconditioners, those based on incomplete factorizations of A, are hard to parallelize. We have discussed some efforts to obtain more parallelism in the preconditioner in Section 9.1. Here we will assume the preconditioner is chosen such that the time to solve Ky=z in parallel is comparable with the time to compute Ap. For CG we also require that the preconditioner K be symmetric positive definite. We exploit this to implement the preconditioner more efficiently.
The preconditioned CG algorithm is as follows.
If A or K is not very sparse, most work is done in multiplying or solving , and this is where parallelism is most beneficial. It is also completely dependent on the structures of A and K.