• Media type: Doctoral Thesis; Electronic Thesis; E-Book
  • Title: FLENS - A Flexible Library for Efficient Numerical Solutions
  • Contributor: Lehn, Michael Christian [Author]
  • Published: Universität Ulm, 2016-03-14T15:20:05Z
  • Language: German
  • DOI: https://doi.org/10.18725/OPARU-1074
  • Keywords: LAPACK ; Curiously Recurring Template Pattern ; Scientific computing ; Generic programming: Computer science ; High performance computing ; BLAS ; Meta-programming ; Object-oriented numerics ; FLENS ; MPI <Schnittstelle> ; DDC 004 / Data processing & computer science ; C++ ; Scientific software engineering
  • Origination:
  • Footnote: Diese Datenquelle enthält auch Bestandsnachweise, die nicht zu einem Volltext führen.
  • Description: This work addresses how the C++ programming language can be extended through libraries to enhance and simplify the development of scientific software. Efforts made in this respect resulted in the design and implementation of the C++ library FLENS (Flexible Library for Efficient Numerical Solutions) as presented in this work. One crucial feature of FLENS is the possibility of extending C++ for matrix and vector types. The Curiously Recurring Template Pattern (CRTP) is used and adapted to realize multilevel class hierarchies for matrix and vector types. One advantage of applying the CRTP is the avoidance of virtual functions which can lead to a considerable runtime overhead. In FLENS the CRTP also plays an essential role within its high-level abstraction for linear algebra operations. FLENS allows the usage of overloaded operators in order to provide an expressive notation. Further, the FLENS library allows the utilization of high performance libraries like for instance BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra Package) in order to perform numerical computations. In this respect FLENS can be considered as an extremely convenient high-level abstraction. The special design of the FLENS library guarantees that no runtime overhead gets induced due to abstraction. A notable feature of the FLENS library is its simple mechanism that allows extending FLENS for new user-defined matrix and vector types as well as for further high performance libraries serving as computational kernels. Several examples are given in order to illustrate how an implementation of iterative methods can be reused for new user-defined matrix and vector types. Furthermore, this work shows how to attain the subsequent parallelization of numerical methods without the need of modifying the original implementation. Using several simple numerical problems these concepts are demonstrated and illustrated, e.g. a simple Navier-Stokes solver.