@Article{Fraysse:2008:ASF, author = "Val\'erie Frayss\'e and Luc Giraud and Serge Gratton", title = "Algorithm 881: A Set of Flexible {GMRES} Routines for Real and Complex Arithmetics on High Performance Computers", journal = "{ACM} Transactions on Mathematical Software", volume = "35", number = "2", month = jul, year = "2008", pages = "13:1--13:12", URL = "http://doi.acm.org/10.1145/1377612.1377617", abstract = "In this paper we describe our implementations of the FGMRES algorithm for both real and complex, single and double precision arithmetics suitable for serial, shared memory and distributed memory computers. For the sake of portability, simplicity, flexibility and efficiency the FGMRES solvers have been implemented in Fortran 77 using the reverse communication mechanism for the matrix-vector product, the preconditioning and the dot product computations. For distributed memory computation, several orthogonalization procedures have been implemented to reduce the cost of the dot product calculation, that is a well-known bottleneck of efficiency for the Krylov methods. Furthermore, either implicit or explicit calculation of the residual at restart is possible depending on the actual cost of the matrix-vector product. Finally the implemented stopping criterion is based on a normwise backward error.", }