To leverage the power of software abstraction while maintaining high-performing applications demands a tight integration of performance measurement and analysis technology in the software engineering process. The success of component software for scientific applications running on large-scale parallel computers will be determined by how close performance comes to standard implementation approaches. We have designed a performance interface for component software, and implemented a performance component using the TAU performance system, to help understand performance problems in scientific component applications.
But this is only one part of the story. Component software has the inherent abstractional power over standard approaches to modify what and how components are used in a computation. If it is possible to inform these component choices with performance information in a manner compatible with component software engineering design, there is great potential for adapting component applications to optimize performance behavior. Indeed, our demonstration shows how the TAU performance component can be used within CCA applications in ways that would allow high-performing, self-optimizing component solutions to be achieved.
However, to do so, we must better address the problems of performance modeling. The ultimate aim of performance modeling is to be able to compose a composite performance model and optimize a component assembly. Apart from performance models, this requires multiple implementations of a functionality (so that one may have alternates to choose from) and a call trace from which the inter-component interaction may be derived. The wiring diagram (available from the framework) along with the call trace (detected and recorded by the performance infrastructure) can be used online to create a composite performance model where the variables are the individual performance models of the components themselves. This facilitates dynamic performance optimization which uses online performance monitoring to determine when performance expectations are not being met and new model-guided decisions of component use need to take place.
While our work has focussed on high-performance computing, there is a direct extension of the methods and infrastructure to grid computing. Component software is a natural model for developing applications for the Grid, as evidenced by the ICENI [19,20] and CCAT  projects. Indeed, the CCA efforts include grid-based implementations, such as XCAT [27,28], that use Globus  for security and remote task creation, and RMI over SOAP for communication. Because our approach leverages the abstraction power of CCA, as well as the infrastructure of CCA frameworks, we expect to similarly leverage Grid infrastructure and servies through interfaces to technology like XCAT. Our monitoring services can also benefit from the Grid Monitoring Architecture (GMA) activities. This research is supported by the U.S. Department of Energy, Office of Science, under contracts DE-FG03-01ER25501 and DE-FG02-03ER25561.