To address the dual goals of performance technology for complex systems -- robust performance capabilities and widely available performance problem solving methodologies -- we need to contend with problems of system diversity while providing flexibility in tool composition, configuration, and integration. One approach to address these issues is to focus attention on a sub-class of computation models and performance problems as a way to restrict the performance technology requirements. The obvious consequence of this approach is limited tool coverage. Instead, our idea is to define an abstract computation model that captures general architecture and software execution features and can be mapped straightforwardly to existing complex system types. For this model, we can target performance capabilities and create a tool framework that can adapt and be optimized for particular complex system cases.
Our choice of general computation model must reflect real computing environments. The computational model we target was initially proposed by the HPC++ consortium . In this model, a node is defined as a physically distinct machine with one or more processors sharing a physical memory system (i.e., a shared memory multiprocessor). A node may link to other nodes via a protocol-based interconnect, ranging from proprietary networks, as found in traditional MPPs, to local- or global-area networks. A context is a distinct virtual address space residing within a node. Multiple contexts may exist on a single node. Multiple threads of execution, both user and system level, may exist within a context; threads within a context share the same virtual address space.