TASCS: The Center for Technology for Advanced Scientific Component Software
TASCS is part of a long-term effort with the far-reaching goal of fundamentally changing the way scientific software is developed and used by bringing component-based software development technologies to high-performance scientific and engineering computing.
TASCS addresses the challenge of complexity in scientific software, brought on by the combination of the increasing simulation fidelity, multi-physics coupling, and the power of the computer systems on which the simulations are run.
As software developers encounter limitations in their ability to comprehend and manage software, computer scientists develop better approaches to help break through these barriers. One of the most recent developments is component-based software development, which emphasizes components as units of software with well-defined functionality which interact with other components through clearly-defined interfaces. Components are natural units of decomposition and interaction for both software and software developers. They can enable scientists to work together as a cohesive scientific enterprise across disciplines, geographical boundaries, and technical preferences.
TASCS leads the development of the Common Component Architecture (CCA), a component software environment specifically designed for the needs of high-performance scientific computing. The Center's work focuses on:
- Maturing the CCA environment and tools to production quality
- Growing a "component ecosystem" to enable plug-and-play application development using off-the-shelf scientific components
- Leveraging the component environment to provide important new capabilities to software developers, including
- Adapting running applications in response to performance, accuracy, faults, and other criteria or events
- Improving software quality via interface contracts, testing, and verification
- Making more effective use of high-end hardware with massive parallelism, heterogeneous processors (i.e. FPGAs, general purpose graphics processors, and other accelerators)
- Helping computational scientists to effectively use component technology
Read about the Common Component Architecture and the CCA Forum...
GoalsThere are two well accepted reasons for approaching HPC software as components:
- Plug-N-Play modular software is not just convenient but helps manage the inevitable complexity of sophisticated applications. As increasingly capable Leadership Class Computing platforms come on line, software of greater fidelity, and hence complexity, is inevitable.
- Automation is acheivable on a level that is not possible with less structured alternatives. TASCS has demonstrated the potential of with a Quantum Chemistry application and has an ongoing research effort into Computational Quality of Service where components are substituted or parameters tweaked during execution to dramatically improve performance.
Components preserve implementations of physics and mathematical algorithms separated from other elements of the calculation by well-defined interfaces that view the physics or mathematics in the abstract. This apporach allows different implementations of the same abstract idea to be changed out and tested separately without affecting the rest of the simulation. Because applications are composed of components by an embedding framework, the application structure and component parameters are known to the system, and are therefore exploitable with automation.
Impact on Scientific Applications
More than 25 different applications groups in diverse fields
- combustion, quantum chemistry, radio astronomy, materials, fusion, particle physics, subsurface transport, cell biology...
have taken advantage of the Common Component Architecture to facilitate their software development. These groups use the CCA in various ways, including:
- Managing code complexity
- Facilitating collaborative software development
- Providing multi-language interfaces for libraries
- Defining common interfaces to facilitate interoperability and reuse of software (libraries)
- Influencing software architecture
- Coupling of simulations
- Building computational toolkits and frameworks
TASCS is a virtual organization comprised of researchers from five national laboratories (ANL, LLNL, ORNL, PNNL, SNL), five universities (Binghamton, Indiana, Maryland, Oregon, Utah), and one small business (Tech-X) collaborating through face-to-face and electronic interactions. The Center is led by David E. Bernholdt of Oak Ridge National Laboratory.
TASCS seeks collaborators to further our research & development activities, and wants to help you use the CCA to further yours.