|
|
|
|
Requirements of Component Architectures for High-Performance Computing
Although minimal, the set of standard features defined for a CCA has
to be large enough to ensure that it satisfies the union of objectives
required by a set of different frameworks. Otherwise, component
interoperability will be meaningless. Those features are:
-
Component characteristics. The CCA will be used primarily for
high-performance components of both coarse and fine grain, implemented
according to different paradigms such as SPMD-style as well as shared
memory multi-threaded models. Examples of issues that need to be
solved in order to build interactions of such components include the
necessity to interact with multiple processes to deliver requests, the
presence of sophisticated run-time systems, message passing libraries
and threads, and efficient transfer of large data sets.
-
Heterogeneity. Whenever technically possible, the CCA should be
able to combine within one multi-component application components
executing on multiple architectures, implemented in different
languages, and using different run-time systems. Furthermore, design
priorities should be geared towards addressing software needs most
common in HPC environment; for example interoperability with languages
popular in scientific programming such as Fortran, C and C++ should be
given priority.
-
Local and remote components. We define components to be local
if they live in a single application address space and remote
otherwise. Interaction between local components should cost no more
than a function call; interaction of remote components should be able
to take advantage of 0-copy protocols and exploit other advantages
offered by state of the art networking. Whenever possible we would
like to stage interoperability of both local and remote components and
be able to seamlessly change interactions from local to remote. We
will address the needs both of remote components running over a local
area network and wide area network; component applications running
over the HPC grid should be able to satisfy real-time constraints and
interact with diverse supercomputing schedulers.
-
Integration. We will try to make the integration of components
as smooth as possible. In general it should not be necessary to
develop a component specially to integrate with the framework, or to
rewrite an existing component substantially.
-
High-Performance. It is essential that the set of standard
features agreed on contain mechanisms for supporting high-performance
interactions; whenever possible we should be able to avoid extra
copies, extra communication or synchronization and encourage efficient
implementation such as parallel data transfers.
-
Openness. The CCA specification should be open, and used
with open software. In HPC this flexibility is needed to keep pace
with the ever-changing demands of the scientific programming
world.
|
|