This work partially funded by NASA GSRP (NGT 5-50165) and does not represent the position or opinions of the United States Government
Overview of IDB
IDB is a framework for profiling the performance of parallel and object oriented scientific applications. At the heart of the framework is the probe library (probelib) which collects performance data in a scalable way. This data is stored in a relational database where it can be queried using a front-end visualization tool or interactively using SQL.
Performance data is tightly coupled with the programs control flow, as opposed to the underlying architecture. Scalability is ensured by maintaining aggregate statistics and instrumenting the relevant nodes of the control flow graph. The nodes that are probed map to specific performance critical events, these are:
Aggregate statistics are collected at each of these events. The order in which they are encountered at run-time define the Control Flow Hierarchy of the application. Every time the application is run, the control flow hierarchy (CFH) and associated statistical data populate a performance database.
In addition to collecting the basic wall time and CPU time statistics, IDB can be integrated with PAPI to provide hardware performance counters.
IDB ComponentsThe IDB framework is comprised of three components
There are four critical performance events that can occur in a program, these are PROCedures, LOOPs, CALLs, and COMMunications or synchronizations. Calls to the Probelib API can be placed at these events using an automated instrumentation tool.
The instrumenter parses C or C++ files to generate a syntax tree. The user is
presented with a catalog of classes, methods, functions, loops and calls to
selects from. Probelib calls are introduced at the selected locations.
Populating the Database
After the source code has been instrumented it is compiled and linked against
the Probelib library. As the program is run, the instrumentation database is
populated with performance data.
The visualization tool connects to the database server and allows the user to generate
customized performance visualizations. It is able to connect to database servers running locally or over a network.
Queries to the database are displayed graphically based on user selections.
The modular design of this tool demonstrates how visualization plug-ins are
developed to pull specialized data from the database.