In this book, which focuses on the use of iterative methods for solving large sparse systems of linear equations, templates are introduced to meet the needs of both the traditional user and the high-performance specialist. Templates, a description of a general algorithm rather than the executable object or source code more commonly found in a conventional software library, offer whatever degree of customization the user may desire.
Templates offer three distinct advantages: they are general and reusable; they are not language specific; and they exploit the expertise of both the numerical analyst, who creates a template reflecting in-depth knowledge of a specific numerical technique, and the computational scientist, who then provides "value-added" capability to the general template description, customizing it for specific needs.
For each template that is presented, the authors provide: a mathematical description of the flow of algorithm; discussion of convergence and stopping criteria to use in the iteration; suggestions for applying a method to special matrix types; advice for tuning the template; tips on parallel implementations; and hints as to when and why a method is useful.