@Article{Fraysse:2005:ASG, author = "Val\'{e}rie Frayss\'{e} and Luc Giraud and Serge Gratton and Julien Langou", title = "Algorithm 842: A Set of {GMRES} Routines for Real and Complex Arithmetics on High Performance Computers", journal = "{ACM} Transactions on Mathematical Software", volume = "31", number = "2", month = jun, year = "2005", pages = "228--238", URL = " http://doi.acm.org/10.1145/1067967.1067970", abstract = "In this paper we describe our implementations of the GMRES 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 effciency the GMRES 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 effciency for the Krylov methods. Either implicit or explicit calculation of the residual at restart are possible depending on the actual cost of the matrix-vector product. Finally the implemented stopping criterion is based on a normwise backward error.", }