ACM Home Page
Please provide us with feedback. Feedback
C++ reflection for high performance problem solving environments
Full text PdfPdf (351 KB)
Source Spring Simulation Multiconference archive
Proceedings of the 2007 spring simulation multiconference - Volume 2 table of contents
Norfolk, Virginia
SESSION: Grid computing table of contents
Pages 435-440  
Year of Publication: 2007
ISBN:1-56555-313-6
Authors
Tharaka Devadithya  Indiana University
Kenneth Chiu  State University of New York, Binghamton
Wei Lu  Indiana University
Sponsors
SCS : Society for Modeling and Simulation International
ACM/SIGSIM : Association for Computing Machinery/Special Interest Group on Simulation
Publisher
Bibliometrics
Downloads (6 Weeks): 5,   Downloads (12 Months): 60,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Review this Article  

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 efficiently 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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Boost Type Traits. http://www.boost.org/doc/html/boost_typetraits.html.
 
2
C++ Reflection. http://sourceforge.net/projects/cppreflect.
 
3
CppUnit - A C++ Unit Testing Framework. http://cppunit.sourceforge.net.
 
4
LHC Computing Grid (LCG) Project. http://lcg.web.cern.ch/LCG/.
 
5
Metaclasses and Reflection in C++. http://www.vollmann.com/pubs/meta/meta/meta.html.
 
6
Microsoft .NET Framework. http://msdn.microsoft.com/netframework.
 
7
Microsoft Visual C++. http://msdn.microsoft.com/visualc.
 
8
Reflection for C++. http://www.garret.ru/~knizhnik/cppreflection/docs/reflect.html.
 
9
SEAL - Core Libraries and Services Project. http://seal.web.cern.ch/seal/.
 
10
The Large Hadron Collider (LHC). http://public.web.cern.ch/public/Content/ Chapters/AboutCERN/CERNFuture/WhatLHC/WhatLHC-en.html.
 
11
R. Bramley, D. Gannon, T. Stuckey, J. Villacis, E. Akman, J. Balasubramanian, F. Breg, S. Diwan, and M. Govindaraju. The linear system analyzer. Technical Report TR-511, Computer Science Dept, Indiana University, 1998.
 
12
 
13
 
14
15
 
16
 
17
ISO. INTERNATIONAL STANDARD: Programming languages - C++. http://www.open-std.org/jtcl/sc22/wg21, 1998.
 
18
 
19
S. Roiser. The SEAL C++ Reflection System. In Computing in High Energy and Nuclear Physics (CHEP), September 2004.
 
20
W3C. Simple Object Access Protocol (SOAP) 1.1. http://www.w3.org/TR/2000/NOTE-SOAP-20000508/, 2000.

Collaborative Colleagues:
Tharaka Devadithya: colleagues
Kenneth Chiu: colleagues
Wei Lu: colleagues