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...
Main Author: | |
---|---|
Other Authors: | |
Published: |
Imperial College London
2013
|
Subjects: | |
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 |