Generic programming and high-performance libraries

  • Authors:
  • Douglas Gregor;Jaakko Järvi;Mayuresh Kulkarni;Andrew Lumsdaine;David Musser;Sibylle Schupp

  • Affiliations:
  • Open Systems Laboratory, Indiana University, Bloomington, IN;Department of Computer Science, Texas A&M University, College Station, TX;Computer Science Department, Rensselaer Polytechnic Institute, Troy, NY;Open Systems Laboratory, Indiana University, Bloomington, IN;Computer Science Department, Rensselaer Polytechnic Institute, Troy, NY;Department of Computing Science, Chalmers University of Technology, Göteborg, Sweden

  • Venue:
  • International Journal of Parallel Programming - Special issue: The next generation software program
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Generic programming is an especially attractive paradigm for developing libraries for high-performance computing because it simultaneously emphasizes generality and efficiency. In the generic programming approach, interfaces are based on sets of specified requirements on types, rather than on any particular types, allowing algorithms to inter-operate with any data types meeting the necessary requirements. These sets of requirements, known as concepts, can specify syntactic as well as semantic requirements. Besides providing a powerful means of describing interfaces to maximize software reuse, concepts provide a uniform mechanism for more closely coupling libraries with compilers and for effecting domain-specific library-based compiler extensions. To realize this goal however, programming languages and their associated tools must support concepts as first-class constructs. In this paper we advocate better syntactic and semantic support to make concepts first-class and present results demonstrating the kinds of improvements that are possible with static checking, compiler optimization, and algorithm correctness proofs for generic libraries based on concepts.