# Presentation: 199619

## Center for Component Technology for Terascale Simulation Software

**Center for Component Technology for Terascale Simulation Software**

**CCA is about:  **
** **_***Enhancing Programmer Productivity***_** without sacrificing performance.**
_***Supporting  multiple Programming Contexts***_**:  Local, parallel and distributed without imposing a specific model or environment on the user.**
_***Supporting multiple Programming languages***_**: C, C++, Fortran, Fortran90, Java, Python **
_***Providing interchangeable data type standards***_**: including multi-dimensional arrays and complex numbers.**
_***Enabling the reuse of Legacy Software***_**: minimizing the effort required to incorporate existing software into a CCA environment.**

- CCA
- Common Component Architecture

- Components: Blue, Green, Red
- Framework: Gray

**C**

**C++**

**f77**

**f90**

**Python**

**Java**

**C**

**C++**

**f77**

**f90**

**Python**

**Java**

- Isoprene HF/6-311G(2df,2pd) parallel speedup in MPQC-based Applications.  CCA does not adversely impact application  performance.

**f,g,H**

**U****i+1**

***s***

***g,H***

- User Input

***U*****i+1**

**f*****,g,H***

**Build options**

**U****i+1 **
**(Visualization)**

**Linear Algebra**
**Factory**

**Solver**
***u*****i+1**** = *****u*****i**** + ****α*****s***** ...**

**Model**
**Factory**

**Linear Algebra**
**Objects**

**Coordinate Model**
**perform transformations**

**Model**
**Object**

- GUI

- Difficult problems require complex software solutions
- Collaboration allows developers to focus on their area of expertise so *functionality* and *quality *of software are increased* *
- Components = Composition
- A component is a unit of software deployment/reuse
- Components interact through standard interfaces without restrictions on implementation (language, parallel model, etc.)
- A component architecture specifies a *framework *for composition of units into applications
- Application programming tasks are reduced to interaction with a framework interface – users construct custom applications from “off-the-shelf” components
- The Common Component Architecture (CCA) Forum provides a specification and software tools for the development of high-performance components

- _Component-based software engineering_

- CCaffeine framework snapshot.

- _Components in SPMD/MPI simulations_

- “Direct-connect” single-component multiple-data model
- Identical components loaded into each process
- Framework allows sharing of interfaces between components in the same process, overhead similar to virtual function call
- Interprocess communication handled by standard parallel models, no component-imposed overhead

- _Language interoperability with Babel_

- Existing language interoperability approaches are insufficient
- Pairwise solutions require a programmer to learn O(n2) approaches to integrate packages in n different languages
- No support for scientific data types

- Babel provides a unified approach to language interoperability
- Scientific data types (complex types, fully-featured arrays, etc.) and a Java-like object model are available in all supported languages
- For example, Fortran implementations are exposed as classes in C++

- Component-framework interaction in high-performance, parallel computing.

- _CCA-Chemistry Project_

- Evaluate component technology as an approach* *for high-performance software development, both within and outside the chemistry domain
- Provide feedback to CCA Forum and framework/tool developers
- Proof of concept: molecular structure optimization
- Gain interoperability between chemistry packages
- Incorporate and evaluate generic mathematics packages
- What improvements are needed for good performance of generic mathematics routines in the chemistry domain?
- Will state-of-the-art mathematics routines provide better performance than application specific routines written by chemistry package developers?

- Language interoperability before Babel.

- Language interoperability with Babel.

_**SCIRun 2 - bridging component technologies.**_
- An example of a  PDE solver that integrates  SciRun, CORBA and VTK components.

- Figure 6.  Schematic of component architecture for molecular structure optimization.

_**CCA Frameworks:**_**  **
** *****CCaffeine – SPMD with MPI components.  The CCA gold standard***
*** ******SCIRun 2 – Multithreaded parallel distributed and multi-paradigm***
*** ******XCAT4 – Web Services and Grid computing with workflow***
*** ******Legion-CCA – Merge of the Legion Grid platform with  CCA***
*** ******CCAIN***** *****– *****A lightweight framework for Fortran90 apps**
_**CCA Tools and Components:**_
*** ******DCA – Coupling parallel apps running on different supercomputers***
***Eclipse plugins -- Making interface design simple.***

- The problem: compose a diverse set of applications running on a distributed set of resources into an adaptive event-driven workflow (NSF ITR LEAD Project)
- Each component is a web service that wraps an application.
- Provides ports = web service ports
- Uses ports = distributed events/notifications + redirected return values
- Control is Python script or BPEL.

- _CCA in Grid Workflow for Weather Prediction_

_**CCA Component Libraries**_
- Components  derived from ARMCI (one-sided messaging), CUMULVS (visualization and parallel data redistribution), CVODE (integrators), DRA (parallel I/O), Epetra (sparse linear solvers), Global Arrays (parallel programming), GrACE (structured adaptive meshes), netCDF and parallel netCDF (input/output), TAO (optimization), TAU (performance measurement), and TOPS (linear and nonlinear solvers).
- Web Services wrapped legacy applications (WRF, ARPS, ADAS (weather), ADaM (data mining), BLAST (genomics)
- SCIRun library and VTK (visualization)