The LAMA Approach for Writing Portable Applications on Heterogenous Architectures
Ensuring longevity and maintainability of modern software applications is mandatory for a proper return on investment. Since the hardware landscape is changing rapidly and will continue to do so, it is imperative to take on those topics also in the HPC (High Performance Computing, uses parallel processing for running advanced application programs efficiently.) domain where applications traditionally have a long live-span. For recent years, we have observed a trend towards more and more heterogeneous systems in computing. Realizing the performance promises of the hardware vendors is a huge challenge to the software developer. Portability is the second challenge to be met in this context. In this paper we present our library LAMA (Library for Accelerated Math Applications). LAMA is a framework for developing hardware-independent, high performance code for heterogeneous computing systems. We created this library to address both challenges successfully in the realm of linear algebra and numerical mathematics. We introduce our solutions to heterogeneous memory and kernel management as well as our solutions to task parallelism. In the end we do performance and scalability benchmarks drawing a comparison to PETSc (Portable, Extensible Toolkit for Scientific Computation, open-source project developed at the Argonne National Laboratory.) for the example of a CG (Conjugate Gradient method, an algorithm for the numerical solution of particular systems of linear equations) solver.