March 27, 2007 HPC 07 - Norfolk, VA 1 C++ Reflection for High Performance Problem Solving Environments Tharaka Devadithya 1 , Kenneth Chiu 2 , Wei Lu 1 1. Computer Science Department, Indiana University 2. Department of Computer Science, State University of New York, Binghamton
22
Embed
C++ Reflection for High Performance Problem Solving Environments
C++ Reflection for High Performance Problem Solving Environments. Tharaka Devadithya 1 , Kenneth Chiu 2 , Wei Lu 1 1. Computer Science Department, Indiana University 2. Department of Computer Science, State University of New York, Binghamton. Outline. Reflection Overview - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
March 27, 2007 HPC 07 - Norfolk, VA 1
C++ Reflection for High Performance Problem Solving Environments
Tharaka Devadithya1, Kenneth Chiu2, Wei Lu1
1. Computer Science Department, Indiana University2. Department of Computer Science, State University of New York,
Binghamton
Outline
Reflection Overview Problem Solving Environments (PSEs) Motivation and Goals C++ Reflection Library Performance Applications Related Work
March 27, 2007 HPC 07 - Norfolk, VA 2
March 27, 2007 HPC 07 - Norfolk, VA 3
Reflection
Involves accessing type information Two main types
Compile-time reflection E.g., Boost type traits
Run-time reflection Some languages support reflection as part of their
standard specifications E.g., Java, C#, Python
C++ supports Run-Time Type Information (RTTI) Very limited features
March 27, 2007 HPC 07 - Norfolk, VA 4
Implementing Run-time Reflection Include additional metadata to compiled
code. Compilers of languages that support
reflection generates this metadata and inserts into the binary.
Since C++ compiler does not generate this metadata, it must be generated as a separate step.
March 27, 2007 HPC 07 - Norfolk, VA 5
Problem Solving Environments (PSEs) Provides all the computational facilities necessary to
solve a target class of problems. A scientist or engineer should be able to
dynamically couple tasks or computations, such that the composite will lead to solving some problem.
Examples Symbolic manipulation for basic mathematical expressions Visualization packages for 2-, 3-, and 4-D phenomena Geometric modelers for a broad class of shapes
March 27, 2007 HPC 07 - Norfolk, VA 6
How Reflection Aids PSE
Need to dynamically couple tasks or computations. It should be possible for the back-end to dynamically
invoke functionalities become known only during run-time.
Reflection provides a powerful and flexible method invocation ability. E.g., request the application to dynamically load a library
and invoke an arbitrary method in it.
March 27, 2007 HPC 07 - Norfolk, VA 7
Need for Reflection in C++ Reflection is not supported by modern languages used in High
Performance Computing (HPC). Attempts to incorporate reflection capabilities to C++ are either
intrusive, or not fully compliant with the C++ standard specification
PSE developers for HPC domains have to depend on another language (e.g., Java) to “wrap” each component with a reflection enabled interface. Multiple language skill required Overhead in transferring data