Technologies & Capabilities
Research by TASCS and its predecessor project, the Center for Component Technology for Terascale Simulation Software, has produced a variety of technologies and capabilities that facilitate different aspects of software development for high-performance scientific computing and other challenges.
Available
Software Architecture and Design
- Scientific Interface Definition Language (SIDL)
- Provides a programming language-neutral approach to specifying the interfaces through which software modules interact. Helps separate design issues from implementation issues and reduce the introduction of language biases into the software design.
- Implemented by the Babel language interoperability tool.
Software Development and Integration
- Babel
- Language interoperability technology for high-performance scientific computing. Babel allows code written in different languages to call each other transparently and with minimal performance overhead. Babel distinguishes itself from other tools with full support for scientific data types such as imaginary numbers and multi-dimensional arrays, and it won a 2006 R&D 100 award for providing the best performance. It's useful for integrating software in different languages, producing multiple language bindings for libraries, and other applications. Babel implements SIDL as its interface definition language and currently supports the C, C++, Fortran, Java, and Python programming languages. Open and extensible to support additional languages.
- Read more at the LLNL Component Technologies web site. Distributed as a standalone package and in the CCA Tools distribution.
- Bocca
- A software development tool supporing SIDL/Babel and the Common Component Architecture. Through simple command-line invocations, this tool frees the developer to focus their attention on the functional aspects of the code. Bocca automatically generates the portable "boilerplate" code and build scripting required to compile and deploy Babel-only or CCA-based applications.
- Part of the CCA Tools distribution.
Application Development
Component applications are generally assembled in a CCA-compliant framework. These frameworks variously target parallel and distributed computing environments and are capable of bridging to other component-like environments for visualization, workflow management, and other capabilities.
- Ccaffeine
- Ccaffeine is a high-performace ("direct-connect") parallel-friendly framework that supports SIDL/Babel components conforming to recent versions of the CCA specification as well as legacy C++-based components based on version 0.5 of the CCA specification.
- Part of the CCA Tools distribution.
- XCAT
- The XCAT framework leverages the CCA component model to design, develop, and execute distributed scientific applications. XCAT facilitates data exchange between components using a high-performance multi-protocol communication library.
- SCIJump
- SCIJump is a scientific problem-solving environment based on both CCA and the SCIRun environment. In SCIJump, distributed CCA-compliant components are supported through remote method invocation (RMI). Parallel components are managed transparently over a parallel method invocation and data redistribution subsystem. A meta-component model based on the CCA is used to accomodate multiple component models such as CCA, VTK, CORBA, and SCIRun's Dataflow.
- Read more at Utah's SCIJump web site.
- MCMD Support
- Extending the CCA environment to support a "multiple-component multiple-data" programming style (the component analog to MPMD). Facilitating the expression of additional parallelism in applications through parallelizing multiple tasks, multi-level parallelism, and other approaches. This work is being carried out under the TASCS Emerging HPC technology development initiative.
- Read more at the CCA Forum MCMD Working Group site.
- Components on Accelerators
- Developing tools and approaches to allow code running on accelerators (such as FPGAs, general-purpose GPUs, and the Cell processor) to be treated as peer components in the CCA environment. This work is being carried out under the TASCS Emerging HPC technology development initiative.
- Computational Quality of Service (CQoS)
- Developing general tools to support the tracking of application characteristics (such as performance, convergence, numerical properties) and automatically adapting the component assembly as needed in response. This work is being carried out under the TASCS Computational Quality of Service technology development initiative.
- Read more at the CCA Forum CQoS site.
- Contracts for Software
- Extending SIDL and Babel to express contracts on component interfaces, and to enforce them in a performance-sensitive manner. This work is being carried out under the TASCS Software Quality and Verification technology initiative.
- Implemented in the Babel language interoperability tool.
- (Semi-)Automatic Component Wrapping
- Developing tools and approaches to facilitate the incorporation of legacy code into the CCA environment. The ability to automatically generate a first approximation for SIDL interface definitions and adapters between those interfaces and the legacy code will significantly accelerate the componentization of existing libraries and other large bodies of code. This work is being carried out under the TASCS Usability effort.
- Experimental releases of the OnRamp tools are available.
- Interoperability Between Scientific Workflows and Components
- In collaboration with the SciDAC Scientific Data Management (SDM) Center, we are designing several actors for the Kepler scientific workflow platform that enable direct communication with CCA frameworks and components. These new actors allow workflow applications to manipulate CCA components and to communicate parameters and results between the two systems. This work is being carried out under the TASCS Enhancements effort.