CCA-LISI: on designing a common component architecture parallel sparse linear solver interface

In high-performance scientific computing (HPC), parallel sparse linear solvers are ubiquitous and the often are the most computationally intensive parts. Many existing packages with different APIs and languages are widely used in the HPC community. This prevents applications built using packages from changing easily to another package.The Common Component Architecture (CCA) framework provides the ability to encapsulate complex scientific software and to reuse it easily. Interfaces are written in scientific interface definition language (SIDL) and language interoperability can be achieved through the BABEL compiler from LLNL. CCA-LISI spans multiple widely-used HPC sparse linear solver packages and deploys a common API to capture the interaction between HPC applications and HPC solvers.However, interface designing in HPC raises new challenges. Some of issues and design decisions are explained, a proposed interface is shown, and a test implementation presented showing that the overhead introduced by CCA framework is minor.