In this Guide, we will take you step by step through a series of hands-on tasks with CCA components in the CCA software environment. The initial set of exercises are based on an example that's intentionally chosen to be very simple from a scientific viewpoint, numerical integration in one dimension, so that we can focus on the issues of the component environment. It may look like overkill to have broken down such a simple task into multiple components, but once you have a basic understanding of how to use and create components, you should be able to extend the concepts to components that are scientifically interesting to you and far more complex.
The exercises are laid out as follows:
In Chapter 2, Assembling and Running a CCA Application, you will use pre-built components to assemble and run several different numerical integration applications.
In Chapter 3, Using Bocca: An Application Generator for CCA, you will construct your own components for the numerical integration example, using the bocca tool.
You are strongly advised to at least read and understand Chapter 2, Assembling and Running a CCA Application before going on to later exercises. You'll need to use the techniques of Chapter 2, Assembling and Running a CCA Application to test the components you write later.
In Chapter 2, Assembling and Running a CCA Application, you'll be working with a complete
version, pre-built of the tutorial code tree. Then in Chapter 3, Using Bocca: An Application Generator for CCA you'll start from scratch to create components
on your own, replicating those in Chapter 2, Assembling and Running a CCA Application. In
this way, the separate complete tutorial code tree can always serve
as a reference if you run into problems. Of course if you're
working through this Guide as part of an organized tutorial, there
should be instructors around who can help you. And if you're
working on your own, you can email us for help at
The CCA is, at its heart, just a specification. There are several realizations of the CCA as a software environment. In this Guide, we use the following tools to provide that software environment, which are currently the most widely used for high-performance (as opposed to distributed) computing using the CCA:
A CCA framework which emphasizes local and parallel high-performance computing, and currently the predominate CCA framework in real applications. For more information, see http://www.cca-forum.org/ccafe/.
A tool for language interoperability. It allows components written in different languages to be connected together. The Scientific Interface Definition Language (SIDL) is associated with Babel. For more information, see http://www.llnl.gov/CASC/components/babel.html. Babel uses Chasm for Fortran 90 array support. For more information, see http://chasm-interop.sourceforge.net.
A tool for generating and manipulating the skeleton code for components. Bocca is designed to simply some of the more tedious and mechanical aspects of creating components. (Before bocca, this Guide was a lot longer because we had to take you step by step through writing all of this "boilerplate" code for yourself.)
Many of the commands you will type are specific to the fact that you're using these tools as your CCA software environment. But the components you will use and create are independent of the particular tools being used.