Generic Programming for High Performance Numerical Linear Algebra

Jeremy G. Siek, Andrew Lumsdaine · 2004

We present a generic programming methodology for expressing data structures and algorithms for high-performance numerical linear algebra. As with the Standard Template Library #14#, our approach explicitly separates algorithms from data structures, allowing a single set of numerical routines to operate with a wide variety of matrix types, including sparse, dense, and banded. Through the use of C++ template programming, in conjunction with modern optimizing compilers, this generality does not come at the expense of performance. In fact, writing portable high-performance codes is actually enabled through the use of generic programming because performance critical code sections can be concentrated into a small number of basic kernels. Two libraries based on our approach are described. The Matrix Template Library #MTL# is a high-performance library providing comprehensive linear algebra functionality. The IterativeTemplate Library, based on MTL, extends the generic programming a...

Read the paper · More papers on PaperTik