home · mobile · calendar · colloquia · 2005-2006 · 

Colloquium - Siek

Languages and Libraries for High Performance Computing
Rice University

Modern computational science problems require software systems that are large and complex and that are as efficient as possible. Abstraction is an important tool for managing the complexity of large software systems, but the tension between abstraction and efficiency is a long-standing difficulty. Generic programming (as exemplified by the C++ Standard Template Library) is an emerging software development paradigm that emphasizes both reusability and efficiency. This paradigm has been used to develop highly-efficient libraries in key areas of scientific computing: basic numerical linear algebra, sparse matrix ordering, iterative solvers, and parallel programming.

In this talk I address issues of modularity that arise in generic programming, most notably with C++. The practice of generic programming in C++ relies heavily on the C++ template mechanism. Unfortunately, C++ does not allow template interfaces to be well defined -- i.e., type parameters cannot be constrained. I present G, a new programming language developed (and formalized) specifically to support generic programming. The constraint language in G is integrated with the type system to provide fully modular type checking and separate compilation. I conclude with a discussion of ongoing work on the C++ Standards Committee to incorporate constrained templates in the next revision of the C++ Standard.

Department of Computer Science
University of Colorado Boulder
Boulder, CO 80309-0430 USA
May 5, 2012 (14:13)