Massively parallel scientific computing, like its counterparts in the commercial sector, must contend with perpetually increasing software complexity. In scientific domains, software complexity arises from the desire to simulate intrinsically complicated natural phenomena with increasing fidelity. Current high-performance parallel simulations of this nature include climate modeling, nanotechnology, magnetohydrodynamics, quantum chromodynamics, computational biology, astronomy, and chemistry, and more recently, multiscale and multiphysics hybrids of two or more of these.
The motivation for component-based software engineering (CBSE) in scientific simulations is largely the same as that for other pursuits: components are a uniform way of compartmentalizing complexity in building blocks for applications. In this paper we present a brief overview of the requirements of CBSE for high-performance scientific computing, and we present the Common Component Architecture (CCA) approach, on which the computational quality-of-service (CQoS) work is based.
Component-based environments offer a degree of flexibility over traditional monolithic scientific applications that opens new possibilities for improving performance, numerical accuracy, and other characteristics. Not only can applications be assembled from components selected to provide the best performance, but they can also be changed dynamically during execution to optimize desirable characteristics. The quality-of-service (QoS) aspects of scientific component software that we consider in this paper differ in important ways from more common component-based sequential and distributed applications. Although performance is a shared general concern, high sequential and parallel efficiency and scalable performance is a more significant requirement in scientific component design and deployment. The factors that affect performance are closely tied to the component's parallel implementation, its management of memory, the algorithms executed, and other operational characteristics. In contrast, performance quality of service in nonscientific component software focuses more on system-related performance effects, such as CPU or network loads. The composition of scientific components also affects their individual performance behavior, suggesting the need for QoS metrics that measure cross-component performance.
Scientific component software is also concerned with functional qualities, such as the level of accuracy achieved for a particular algorithm. When components can operate under various functional modes while employing the same external interface and can switch between modes during execution, different service requirements can arise. Moreover, the interaction of the functional qualities with the performance qualities of scientific components makes dynamic service mechanisms distinctly important. For example, the selection of an algorithm for a given problem must take into account a possible tradeoff between speed and reliability. When these component-specific QoS concerns are considered globally in the context of the composite component application, opportunities to enhance the computation arise.
We refer to this concept of the automatic selection and configuration of components to suit a particular computational purpose as computational quality of service (CQoS). CQoS is a natural extension of the capabilities of the component environment. The name refers to the importance of the computational aspects--both functional and nonfunctional--of scientific components in how they are developed and used. CQoS embodies the familiar concept of quality of service in networking and the ability to specify and manage characteristics of the application in a way that adapts to the changing (computational) environment. We discuss techniques to support CQoS capabilities from the viewpoint of enhancing the computational service being offered.
In this paper, we first overview the background and requirements for CBSE in scientific computation. Next, we briefly describe the CCA. We then discuss the concept of computational quality of service as it applies to components for high-performance scientific applications, and we describe an initial implementation of a CQoS environment that is being integrated with the CCA technology. We conclude with prospects for future work.