Grid Computing Research Laboratory

State University of New York (SUNY) Binghamton
Department of Computer Science

[Home] [Background] [For Visitors] [Projects] [People] [Papers] [Talks] [Resources] [Funding] [Internal]

Tharaka Devadithya and Kenneth Chiu and Wei Lu
"C++ Reflection for High Performance Problem Solving Environments",
to appear in High Performance Computing Symposium (HPC 2007),
Norfolk, Virginia, March 25-29, 2007
[PDF] [bibtex]

Abstract
Problem Solving Environments (PSE) in scientific computing domains require the ability to couple High Performance Computing (HPC) components. A PSE facilitates coupling of tasks or computations in order to aid a scientist in finding a solution to a problem or at least getting closer to a solution. Reflection capabilities are required in order to effectively dynamically couple these components. Reflection facilitates adaptive behavior such as rebinding calls to different functions at run-time, or integrating flexible interpreted languages with compiled languages such as C++ or Fortran. Currently, however, reflection is not available in languages commonly used in high performance computing. While there have been several attempts to incorporate reflection into C++, all of them are either intrusive or are not fully compliant with the C++ standard. In this paper, we present a number of use cases for reflective programming, and show how it can be effi- ciently and robustly implemented in languages such as C++. Our implementation uses code generation to add metadata, and is fully compliant with the standard C++ specification. We compare the overhead of reflection with languages such as Java, and show that our overhead is acceptable for many scenarios. Our reflection library is open-source, and is available at http://www.extreme.indiana.edu/reflcpp.

Key Words
c++ reflection, problem solving environments, generic programming, scientific computing, high performance computing