# KSPPIPEBCGS
Implements a pipelined BiCGStab method. [](sec_pipelineksp) 


## Notes
This method has only two non-blocking reductions per iteration, compared to 3 blocking for standard FBCGS.  The
non-blocking reductions are overlapped by matrix-vector products and preconditioner applications.

Periodic residual replacement may be used to increase robustness and maximal attainable accuracy.

Like `KSPFBCGS`, the `KSPPIPEBCGS` implementation only allows for right preconditioning.

MPI configuration may be necessary for reductions to make asynchronous progress, which is important for
performance of pipelined methods. See [](doc_faq_pipelined)


## Contributed by
Siegfried Cools, Universiteit Antwerpen,
EXA2CT European Project on EXascale Algorithms and Advanced Computational Techniques, 2016.


## Reference

- **** -*** S. Cools and W. Vanroose,
"The communication-hiding pipelined BiCGStab method for the parallel solution of large unsymmetric linear systems",
Parallel Computing, 65:1-20, 2017.



## See Also
 [](chapter_ksp), `KSPFBCGS`, `KSPFBCGSR`, `KSPBCGS`, `KSPBCGSL`, `KSPCreate()`, `KSPSetType()`, `KSPType`, `KSP`, `KSPBICG`, `KSPFBCGS`, `KSPFBCGSL`, `KSPSetPCSide()`,
[](sec_pipelineksp), [](doc_faq_pipelined)

## Level
intermediate

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/impls/bcgs/pipebcgs/pipebcgs.c.html#KSPPIPEBCGS">src/ksp/ksp/impls/bcgs/pipebcgs/pipebcgs.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/impls/bcgs/pipebcgs/pipebcgs.c)


[Index of all KSP routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
