libCEED – The Finite Elements library without elements
posterposted on 2021-02-17, 04:35 authored by Valeria BarraValeria Barra, Jeremy Thompson, Leila Ghaffari, Jed BrownJed Brown
Current and next generation HPC systems have enabled new modeling strategies for physical simulations that feature finer spatial resolution and higher-order methods to achieve reliable predictions of complex systems. However, high-performance implementations of high-order numerical methods have often been entwined with special-purpose packages, thus difficult to port to new applications or machines. LibCEED is a low-level Finite Elements library developed within the Center for Efficient Exascale Discretizations (CEED), part of the Exascale Computing Project. CEED collaborates with hardware vendors and software technology projects to facilitate software preservation, portability and migration; all aspects that foster software sustainability. LibCEED is an open-source, light-weight, C99 library, with no dependencies, and Fortran, Python, Julia and Rust interfaces. It offers a fully algebraic interface for efficient, scalable, and portable matrix-free implementations of high-order finite/spectral element operators that support a variety of computational device types (CPUs, GPUs, etc.), selectable at runtime. Unlike other Finite Elements packages, libCEED encapsulates technology to facilitate library reuse and gives specialists the flexibility to work on components and compose them without having to commit to a set framework. We present libCEED’s API, some examples of its integration with other scientific computing packages (e.g., MFEM, PETSc), and miniapps that ship with the library. A poster presented at the SIAM CSE21 conference, minisymposterium PP7: Software Productivity and Sustainability for CSE.