Multilayered abstractions for partial differential equations

How do we build maintainable, robust, and performance-portable scientific applications? This thesis argues that the answer to this software engineering question in the context of the finite element method is through the use of layers of Domain-Specific Languages (DSLs) to separate the various concer...

Full description

Bibliographic Details
Main Author: Markall, Graham
Other Authors: Kelly, Paul H. J.; Ham, David A.
Published: Imperial College London 2013
Subjects:
004
Online Access:http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.646917
id ndltd-bl.uk-oai-ethos.bl.uk-646917
record_format oai_dc
spelling ndltd-bl.uk-oai-ethos.bl.uk-6469172015-12-03T03:46:50ZMultilayered abstractions for partial differential equationsMarkall, GrahamKelly, Paul H. J.; Ham, David A.2013How do we build maintainable, robust, and performance-portable scientific applications? This thesis argues that the answer to this software engineering question in the context of the finite element method is through the use of layers of Domain-Specific Languages (DSLs) to separate the various concerns in the engineering of such codes. Performance-portable software achieves high performance on multiple diverse hardware platforms without source code changes. We demonstrate that finite element solvers written in a low-level language are not performance-portable, and therefore code must be specialised to the target architecture by a code generation framework. A prototype compiler for finite element variational forms that generates CUDA code is presented, and is used to explore how good performance on many-core platforms in automatically-generated finite element applications can be achieved. The differing code generation requirements for multi- and many-core platforms motivates the design of an additional abstraction, called PyOP2, that enables unstructured mesh applications to be performance-portable. We present a runtime code generation framework comprised of the Unified Form Language (UFL), the FEniCS Form Compiler, and PyOP2. This toolchain separates the succinct expression of a numerical method from the selection and generation of efficient code for local assembly. This is further decoupled from the selection of data formats and algorithms for efficient parallel implementation on a specific target architecture. We establish the successful separation of these concerns by demonstrating the performance-portability of code generated from a single high-level source code written in UFL across sequential C, CUDA, MPI and OpenMP targets. The performance of the generated code exceeds the performance of comparable alternative toolchains on multi-core architectures.004Imperial College Londonhttp://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.646917http://hdl.handle.net/10044/1/22175Electronic Thesis or Dissertation
collection NDLTD
sources NDLTD
topic 004
spellingShingle 004
Markall, Graham
Multilayered abstractions for partial differential equations
description How do we build maintainable, robust, and performance-portable scientific applications? This thesis argues that the answer to this software engineering question in the context of the finite element method is through the use of layers of Domain-Specific Languages (DSLs) to separate the various concerns in the engineering of such codes. Performance-portable software achieves high performance on multiple diverse hardware platforms without source code changes. We demonstrate that finite element solvers written in a low-level language are not performance-portable, and therefore code must be specialised to the target architecture by a code generation framework. A prototype compiler for finite element variational forms that generates CUDA code is presented, and is used to explore how good performance on many-core platforms in automatically-generated finite element applications can be achieved. The differing code generation requirements for multi- and many-core platforms motivates the design of an additional abstraction, called PyOP2, that enables unstructured mesh applications to be performance-portable. We present a runtime code generation framework comprised of the Unified Form Language (UFL), the FEniCS Form Compiler, and PyOP2. This toolchain separates the succinct expression of a numerical method from the selection and generation of efficient code for local assembly. This is further decoupled from the selection of data formats and algorithms for efficient parallel implementation on a specific target architecture. We establish the successful separation of these concerns by demonstrating the performance-portability of code generated from a single high-level source code written in UFL across sequential C, CUDA, MPI and OpenMP targets. The performance of the generated code exceeds the performance of comparable alternative toolchains on multi-core architectures.
author2 Kelly, Paul H. J.; Ham, David A.
author_facet Kelly, Paul H. J.; Ham, David A.
Markall, Graham
author Markall, Graham
author_sort Markall, Graham
title Multilayered abstractions for partial differential equations
title_short Multilayered abstractions for partial differential equations
title_full Multilayered abstractions for partial differential equations
title_fullStr Multilayered abstractions for partial differential equations
title_full_unstemmed Multilayered abstractions for partial differential equations
title_sort multilayered abstractions for partial differential equations
publisher Imperial College London
publishDate 2013
url http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.646917
work_keys_str_mv AT markallgraham multilayeredabstractionsforpartialdifferentialequations
_version_ 1718142691256041472