Abstract
The numerical solution of partial differential equations frequently requires the solution of large and sparse linear systems. Using generic programming techniques in C++ one can create solver libraries that allow efficient realization of “fine grained interfaces”, i.e. with functions consisting only of a few lines, like access to individual matrix entries. This prevents code replication and allows programmers to work more efficiently. We present the “Iterative Solver Template Library” (ISTL) which is part of the “Distributed and Unified Numerics Environment” (DUNE). It applies generic programming in C++ to the domain of iterative solvers of linear systems stemming from finite element discretizations. Those discretizations exhibit a lot of structure. Our matrix and vector interface supports a block recursive structure. Each sparse matrix entry can itself be either a sparse or a small dense matrix. Based on this interface we present efficient solvers that use the recursive block structure via template metaprogramming.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Balay, S., Buschelman, K., Eijkhout, V., Gropp, W.D., Kaushik, D., Knepley, M.G., McInnes, L.C., Smith, B.F., Zhang, H.: PETSc users manual. Technical Report ANL-95/11 - Revision 2.1.5, Argonne National Laboratory (2004)
Barton, J.J., Nackman, L.R.: Scientific and Engineering C++. Addison-Wesley, London (1994)
Bastian, P., Droske, M., Engwer, C., Klöfkorn, R., Neubauer, T., Ohlberger, M., Rumpf, M.: Towards a unified framework for scientific computing. In: Kornhuber, R., Hoppe, R., Périaux, J., Widlund, O., Pironneau, O., Xu, J. (eds.) Domain Decomposition Methods in Science and Engineering. LNCSE, vol. 40, pp. 167–174. Springer, Heidelberg (2005)
Bastian, P., Helmig, R.: Efficient fully-coupled solution techniques for two-phase flow in porous media. Parallel multigrid solution and large scale computations. Adv. Water Res. 23, 199–216 (1999)
BLAST Forum. Basic linear algebra subprograms technical (BLAST) forum standard (2001), http://www.netlib.org/blas/blast-forum/
Blitz++. http://www.oonumerics.org/blitz/
Dongarra, J.: List of freely available software for linear algebra on the web (2006), http://netlib.org/utk/people/JackDongarra/la-sw.html
Elmroth, E., Gustavson, F., Jonsson, I., Kagström, B.: Recursive blocked algorithms and hybrid data structures for dense matrix library software. SIAM Review 46(1), 3–45 (2004)
Haase, G., Langer, U., Meyer, A.: The approximate dirichlet domain decomposition method. part i: An algebraic approach. Computing 47, 137–151 (1991)
Hefferson, J.: Linear algebra. in the web (May 2006), http://joshua.amcvt.edu/
Iterative template library, http://www.osl.iu.edu/research/itl/
Matrix template library, http://www.osl.iu.edu/research/mtl/
Siek, J., Lumsdaine, A.: A modern framework for portable high-performance numerical linear algebra. In: Langtangen, H.P., Bruaset, A.M., Quak, E. (eds.) Advances in Software Tools for Scientific Computing, LNCSE, vol. 10, pp. 1–56. Springer, Heidelberg (1974)
Stroustrup, B.: The C++ Programming Language. Addison-Wesley, London (1997)
Veldhuizen, T.: Techniques for scientific C++. Technical report, Indiana University, Computer Science Department (1999)
Vuduc, R., Demmel, J.W., Yelick, K.A.: Oski: A library of automatically tuned sparse matrix kernels. Journal of Physics Conference Series 16, 521–530 (2005)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Blatt, M., Bastian, P. (2007). The Iterative Solver Template Library. In: Kågström, B., Elmroth, E., Dongarra, J., Waśniewski, J. (eds) Applied Parallel Computing. State of the Art in Scientific Computing. PARA 2006. Lecture Notes in Computer Science, vol 4699. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-75755-9_82
Download citation
DOI: https://doi.org/10.1007/978-3-540-75755-9_82
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-75754-2
Online ISBN: 978-3-540-75755-9
eBook Packages: Computer ScienceComputer Science (R0)