**CCA Infrastructure and Enabling Technology**

R. Armstrong(SNL, PI), G. Kumfert(LLNL, co-PI, Frameworks &
Infrastructure), J. Kohl(ORNL, co-PI, Data Redistribution); B.
Allan(SNL), D. Bernholdt(ORNL),

F. Bertrand(Indiana), R. Bramley(Indiana), K. Chiu(Indiana),\
T. Dahlgren(LLNL), K. Damevski(Indiana) T. Epperly(LLNL), D.
Gannon(Indiana, co-PI) , J. Larson(ANL), S. Park er(Utah, co-PI)\
C. Rasmussen(LANL, co-PI), M. Sottile(LANL)

**Summary**

***The Center for Component Technology for Terascale Simulation Software
(CCTTSS) delivers component technology to terascale simulations.***
***Component-based software*** ***is easier to use, compose, specialize,
share, and evolve. To provide these benefits*** ***new infrastructure is
needed; commercial component frameworks are*** ***not practical*** ***in
this context. CCTTSS technology activities are vertically integrated to
provide the vital infrastructure, spanning the range from conducting
novel research to deploying production frameworks, components, tools.***

**Frameworks**

CCA frameworks support the composition of components into terascale
applications by implementing and enforcing the CCA-specified behavior
designed to maximize interoperability. Frameworks manage components:
their creation, connection, and cleanup. The CCA specification is
amenable to multiple parallelism models, such as SPMD, distributed, and
multithreaded, as well as arbitrary combinations thereof.

The CCTTSS supports three production frameworks, each with its own
specialties and research emphasis. Linkages among these frameworks
provide a full complement of features for various application scenarios.
Ccaffeine provides high-performance parallel components via a
single-threaded environment using MPI for interprocess communication.
XCAT emphasizes distributed computing, providing Grid and Web Services
connectivity to CCA. SCIRun2 supports CCA with a mix of parallelism
models and bridges capabilities to the original SCIRun data-flow model.

![](media/image1.png){width="3.027952755905512in"
height="2.075196850393701in"}Research in this area is not limited to the
three production frameworks. Decaf, Dune, DCA, and Uintah are all CCA
research frameworks that quickly explore novel features and transfer
technology back to production frameworks.

MxN Parallel Data Redistribution

Data layout is critical for high performance. Simulations, each with
their own tailored parallel distribution of data, demand intricate data
movement to retain their high-performance when combined with other
simulations. We call this coupling problem in its most general form
"MxN."

The CCA will make *generalized* parallel model coupling a reality.
Coupling of parallel simulations is most commonly done ad hoc today. The
ESMF (NASA) and MCT are coupling tools tailored specifically for climate
modeling.

CCA's MxN tools -- building on PAWS, CUMULVS, SCIRun and MetaChaos
(Maryland) -- are implemented as CCA components. CCA componentization
enabled generalizing the disparate communication models in these tools
into a common interface that subsumes all the basic capabilities. To
incorporate a variety of structured and unstructured mesh support,
research continues in cooperation with the CCA Scientific Data working
group and the TSTT Center[^1].

In the *distributed* computing, assumptions implicit in coupling codes
break down, such as component co-location. Understanding the impact of
distributed frameworks has on MxN and CCA is subject of ongoing
research. SCIRun2 and DCA in particular are exploring the issues and
semantics behind *parallel remote method invocation* (PRMI).

**Language Interoperability**

CCA components are language neutral units of software (compiled or
interpreted) that are loaded into a high-performance compiled
environment at runtime. Whether a component is a piece of Fortran 90
engineering code, a C++ numeric library, or Python rendering module, no
component ever knows (or cares) what languages it gets called from or is
calling to. With this level of language interoperability, many details
that preclude effective reuse evaporate.

The CCA specification is written in SIDL (Scientific Interface
Definition Language). The Babel language interoperability tool reads
SIDL to encapsulate components written in C, C++, Fortran77/90/95 and
Python.

There are several research efforts related to lnaguage interoperability.
Chasm is an automatic wrapping tool to connect Fortran90/95 and C++. It
generates wrappings implicitly by scanning existing source code. Babel
leverages Chasm's infrastructure for dealing with Fortran90 array
descriptors -- a pernicious barrier to language interoperability. Utah
has a SIDL variant called PIDL (Parallel Interface Definition Language)
that explores adding parallel directives to SIDL. Proteus and Babel are
working together to add multi-protocol remote method invocation (RMI).

supported specification **Tying It All Together:** **Meta-Components**

Two promising trends are emerging from CCA frameworks and technologies.
First, CCA framework implementations are bridging multiple component
models, and external systems have started to implement CCA of their own
accord (e.g. LegionCCA). Second, and more subtly, the frameworks
themselves are becoming smaller -- more componentized. Together, these
give rise to the concept of component multi-models, or meta-component
frameworks. Lighter, feature rich, and change oriented, these new
frameworks exemplify why the future of terascale computing is with
component software.

**For further information on this subject contact:**

Rob Armstrong

Sandia National Laboratory

Livermore, CA 94551-9915

Phone: (925) 294-2470

Email: <rob@sandia.gov>

[http://www.cca-forum.org](http://www.cca-forum.org/)

[^1]: SciDAC Terascale Simulation Tools and Technology Center (TSTT),
    www.tstt-scidac.org