Overview The SciDAC Center for Technology for Advanced Scientific Computing Software (TASCS) focuses on developing tools, components and best practices for developing high quality, reusable high-performance computing software. TASCS fosters the Co mmon Component Architecture (CCA) through a community forum that involves a wide range of participants. The CCA environment aims to bring compone nt-based software development techniques and tools, which are commonplace in the computing industry, to high performance computing. To do so, several challenges are being addressed including parallelism, performance, and efficient handling of large datasets. The CCA has produced a specification that allows components to be deployed and reused in a highly extensible yet efficient parallel environment. The primary advantage of this component-base d approach is the separate development of simulation algorithms, models, and infrastructure. This allows the pieces of a complex simulation to evolve indepe ndently, thereby helping a system grow intelligently as technologies mature. The CCA tools have been used to improve productivity and increase capa bilities for HPC software in meshing, solvers, and computational chemistry, among other applications. TASCS supports a range of core technologies for using components in high-performance simula tion software, including the Caffeine framework, the Babel interoperability tool, and the Bocca development environment for HPC components. In additio n, the CCA helps provide access to tools for performance analysis, for coupling parallel simulations, for mixing distributed and parallel computing, and for ensuring software quality in complex parallel simulations. These tools can help tame the complexity of utilizing parallel computation, especially for sophisticated applications that integrate multiple software packages, physical simulation regimes or solution techniques. We will discuss some of these tools and show how they have been used to solve HPC programming challenges. The component-based software engineering (CBSE)[1] methodology has been developed to facilitate the understanding, development, and evolution of large-scale software systems. By emphasizing strong encapsulation of code with well defined interfaces between modules, a component approach pr ovides a way of decomposing software into units that are conceptually manageable, and that interact in specific and easily understood ways. These characteristics also facilitate the design and evolution of large, complex software s ystems by distinguishing between the functional specification of a component (fixed or slowly changing) and its implementation (possibly more rapidly changing , or even having multiple implementations). With thoughtful design of interfaces, component approaches can promote software reuse and interoperability. The encapsulation of components makes them useful in …
更多