Imperial College London

DrDavidHam

Faculty of Natural SciencesDepartment of Mathematics

Reader in Computational Mathematics
 
 
 
//

Contact

 

+44 (0)20 7594 5003david.ham Website CV

 
 
//

Location

 

758Huxley BuildingSouth Kensington Campus

//

Summary

 

Publications

Publication Type
Year
to

106 results found

Betteridge JD, Farrell PE, Ham DA, 2021, Code generation for productive, portable, and scalable finite element simulation in Firedrake, Computing in Science and Engineering, Vol: 23, Pages: 8-17, ISSN: 1521-9615

Creating scalable, high performance PDE-based simulations requires a suitablecombination of discretizations, differential operators, preconditioners andsolvers. The required combination changes with the application and with theavailable hardware, yet software development time is a severely limitedresource for most scientists and engineers. Here we demonstrate that generatingsimulation code from a high-level Python interface provides an effectivemechanism for creating high performance simulations from very few lines of usercode. We demonstrate that moving from one supercomputer to another can requiresignificant algorithmic changes to achieve scalable performance, but that thecode generation approach enables these algorithmic changes to be achieved withminimal development effort.

Journal article

Sun T, Mitchell L, Kulkarni K, Klockner A, Ham DA, Kelly PHJet al., 2020, A study of vectorization for matrix-free finite element methods, International Journal of High Performance Computing Applications, Vol: 34, Pages: 629-644, ISSN: 1094-3420

Vectorization is increasingly important to achieve high performance on modern hardware with SIMD instructions. Assembly of matrices and vectors in the finite element method, which is characterized by iterating a local assembly kernel over unstructured meshes, poses difficulties to effective vectorization. Maintaining a user-friendly high-level interface with a suitable degree of abstraction while generating efficient, vectorized code for the finite element method is a challenge for numerical software systems and libraries. In this work, we study cross-element vectorization in the finite element framework Firedrake via code transformation and demonstrate the efficacy of such an approach by evaluating a wide range of matrix-free operators spanning different polynomial degrees and discretizations on two recent CPUs using three mainstream compilers. Our experiments show that our approaches for cross-element vectorization achieve 30% of theoretical peak performance for many examples of practical significance, and exceed 50% for cases with high arithmetic intensities, with consistent speed-up over (intra-element) vectorization restricted to the local assembly kernels.

Journal article

Ham D, 2020, mcow7j/FEECL: FEECL

A basic symbolic finite element exterior calculus language, to formulate the weak form of PDEs and work in tandem with UFL.

Software

Wallwork JG, Barral N, Kramer SC, Ham DA, Piggott MDet al., 2020, Goal-oriented error estimation and mesh adaptation for shallow water modelling, SN Applied Sciences, Vol: 2, Pages: 1-11, ISSN: 2523-3971

This study presents a novel goal-oriented error estimate for the nonlinear shallow water equations solved using a mixed discontinuous/continuous Galerkin approach. This error estimator takes account of the discontinuities in the discrete solution and is used to drive two metric-based mesh adaptation algorithms: one which yields isotropic meshes and another which yields anisotropic meshes. An implementation of these goal-oriented mesh adaptation algorithms is described, including a method for approximating the adjoint error term which arises in the error estimate. Results are presented for simulations of two model tidal farm configurations computed using the Thetis coastal ocean model (Kärnä et al. in Geosci Model Dev 11(11):4359–4382, 2018). Convergence analysis indicates that meshes resulting from the goal-oriented adaptation strategies permit accurate QoI estimation using fewer computational resources than uniform refinement.

Journal article

Luporini F, Ham D, 2020, coneoproject/SLOPE: The last release before external contributions

SLOPE is a run-time system and code generator for fusing and tiling loops with indirect memory accesses

Software

Kärnä T, Kramer S, Mitchell L, Angeloudis A, Ham DA, Barral N, McRae ATTet al., 2020, thetisproject/thetis: Thetis coastal ocean model

This version is used in paper "A comparison of Bayesian inference and gradient-based approaches for friction parameter estimation."This release is specifically created to document the version of Thetis used in a particular set of experiments. Please do not cite this as a general source for Thetis. See https://thetisproject.org/publications.html for how to cite Thetis in your work.

Software

Gibson T, Mitchell L, Ham D, Cotter Cet al., 2020, Slate: extending Firedrake's domain-specific abstraction to hybridized solvers for geoscience and beyond, Geoscientific Model Development, Vol: 13, Pages: 735-761, ISSN: 1991-959X

Within the finite element community, discontinuous Galerkin (DG) and mixed finite element methods have becomeincreasingly popular in simulating geophysical flows. However, robust and efficient solvers for the resulting saddle-point andelliptic systems arising from these discretizations continue to be an on-going challenge. One possible approach for addressingthis issue is to employ a method known as hybridization, where the discrete equations are transformed such that classic staticcondensation and local post-processing methods can be employed. However, it is challenging to implement hybridization as performant parallel code within complex models, whilst maintaining separation of concerns between applications scientistsand software experts. In this paper, we introduce a domain-specific abstraction within the Firedrake finite element library thatpermits the rapid execution of these hybridization techniques within a code-generating framework. The resulting frameworkcomposes naturally with Firedrake’s solver environment, allowing for the implementation of hybridization and static condensa-tion as runtime-configurable preconditioners via the Python interface to PETSc, petsc4py. We provide examples derived from second order elliptic problems and geophysical fluid dynamics. In addition, we demonstrate that hybridization shows greatpromise for improving the performance of solvers for mixed finite element discretizations of equations related to large-scalegeophysical flows.

Journal article

Ham D, 2020, Review

Journal article

Shapero D, Lilien D, Ham D, Hoffman Aet al., 2019, icepack/icepack: icepack: glacier flow modeling with the finite element method in Python

This is the beta release of icepack, a new software package for modeling the flow of glaciers and ice sheets in Python. The main design goal of icepack is to be easy to use for practicing glaciologists, whether they are experts or novices in computational physics and high-performance computing.

Software

Logg A, Barton SN, Wells GN, Mitchell L, Homolya M, Ham D, Richardson C, Ring J, Blechta J, Rognes ME, Daversin-Catty C, Bergersen A, Wechsung F, Hale JS, Habera M, Li L, Gibson TH, Leoni M, Barton N, Baratta I, Mardal K-A, Yashchuk I, Rathgeber F, Fauske VT, Markall G, Kirby R, Cotter CJ, Gregory Aet al., 2019, firedrakeproject/ufl: The Unified Form Language

This release is specifically created to document the version of ufl used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html

Software

Homolya M, Kirby R, Blechta J, Ham D, Rognes ME, Logg A, Wells GN, Gibson TH, Ring J, Yashchuk I, Mitchell L, Richardson C, Schlömer N, Li L, Bergersen A, Cotter CJ, Hale JS, Knepley M, Rathgeber F, Terrel ARet al., 2019, firedrakeproject/fiat: The Finite Element Automated Tabulator

This release is specifically created to document the version of fiat used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html.

Software

Ham DA, Mitchell L, Paganini A, Wechsung Fet al., 2019, Automated shape differentiation in the Unified Form Language, STRUCTURAL AND MULTIDISCIPLINARY OPTIMIZATION, Vol: 60, Pages: 1813-1820, ISSN: 1615-147X

Journal article

Ham D, van Sebille E, Delandmeter P, Lange M, Rath W, Scutt Phillips J, Kronborg J, Petersik P, Brouwer R, Wichmann D, Edwards R, Sterl M, Walbridge S, Kaandorp M, Miron P, de Bruin J, Glissenaar I, Vettoretti G, Ham DA, Reijnders D, Gibson Aet al., 2019, OceanParcels/parcels: Parcels v2.1.2: a Lagrangian Ocean Analysis tool for the petascale age

Parcels v2.1.2 is a quick release build on previous versions v2.1.1. In particular:It fixes a serious bug on some systems with floating point accuracy, that could lead to incorrect output files (see #670 and solution at #672). For this reason, all users are encouraged to use this new version v2.1.2 instead of v2.1.1.It also fixes a smaller bug (#676) with the timestamps argument in Field.from_netcdf()

Software

Rathgeber F, Mitchel L, Luporini F, Ham D, Markall G, Homolya M, Sun T, Barton SN, Dearman H, Gibson TH, gbts, Wechsung F, Kramer S, Funke SW, Shapero D, Kirby R, Lange M, Sato K, Russell F, Zhou Fet al., 2019, OP2/PyOP2: Framework for performance-portable parallel computations on unstructured meshes

OP2/PyOP2: Framework for performance-portable parallel computations on unstructured meshes

Software

Logg A, Barton SN, Wells GN, Mitchell L, Homolya M, Ham D, Ring J, Blechta J, Rognes ME, Richardson C, Bergersen A, Wechsung F, Hale JS, Li L, Gibson TH, Leoni M, Barton N, Baratta I, Mardal K-A, Yashchuk I, Rathgeber F, Fauske VT, Markall G, celdred, Kirby R, Cotter CJ, maxalbert, mliertzer, Gregory A, cmauriniet al., 2019, firedrakeproject/ufl: The Unified Form Language

firedrakeproject/ufl: The Unified Form Language

Software

Mitchell L, Ham D, Gibson TH, Rathgeber F, Homolya M, McRae ATT, Zhou F, Cotter CJ, Lange M, ksagiyam, Wechsung F, Andrej J, Luporini F, Kirby R, Sun T, APaganini, Poulin FJ, Roy T, Hawkes C, Kärnä T, Salwa T, Kalogirou A, Barral N, Greaves T, Kramer S, Gregory A, Funke SW, Büsing H, tommbendall, McBain Get al., 2019, firedrakeproject/firedrake: an automated finite element system

firedrakeproject/firedrake: an automated finite element system

Software

Dalcin L, Mitchell L, Brown J, Balay S, Farrell PE, Lange M, Gouarin L, Smith B, Knepley M, Karpeyev D, Zampini S, nocollier, Ham DA, Wells GN, celdred, Funke S, Wechsung F, Barral N, Ahmadia A, alejandrootero, Homolya M, Blechta J, Costamagna G, cnkin, Mather B, Cañardo Alastuey J, Guyer J, Ballarin Fet al., 2019, firedrakeproject/petsc4py: The Python interface to PETSc

firedrakeproject/petsc4py: The Python interface to PETSc

Software

Homolya M, Kirby R, Blechta J, Rognes ME, Ham DA, Logg A, cyruscycheng21, Wells GN, Gibson TH, Ring J, Yashchuk I, Schlömer N, Mitchell L, Li L, Bergersen A, Cotter C, Hale JS, Richardson C, Knepley M, Rathgeber F, mliertzer, Terrel ARet al., 2019, firedrakeproject/fiat: The Finite Element Automated Tabulator

firedrakeproject/fiat: The Finite Element Automated Tabulator

Software

Homolya M, Mitchell L, Barton SN, Ham D, Sun T, Gibson TH, Kirby R, cyruscycheng21, Blechta J, Habera M, Kärnä T, celdredet al., 2019, firedrakeproject/tsfc: The Two Stage Form Compiler

firedrakeproject/tsfc: The Two Stage Form Compiler

Software

Ham D, Homolya M, Lange M, Kirby R, Lawrence M, cyruscycheng21, celdredet al., 2019, FInAT/FInAT: a smarter library of finite elements

FInAT/FInAT: a smarter library of finite elements

Software

van Sebille E, Delandmeter P, Lange M, Rath W, Scutt Phillips J, Simnator101, pdnooteboom, Kronborg J, Thomas-95, Wichmann D, Tarshish N, Busecke J, Edwards R, Sterl M, Walbridge S, Kaandorp M, Hart-Davis, Miron P, Glissenaar I, Vettoretti G, Ham Det al., 2019, OceanParcels/parcels: Parcels v2.0.0: a Lagrangian Ocean Analysis tool for the petascale age

Parcels v2.0.0 builds on previous versions v2.0.0.beta and v2.0.0.beta2. It's the release which is fully described in the paper The Parcels v2.0 Lagrangian framework: new field interpolation schemes, by Delandmeter and van Sebille, 2019, GMD.The major changes of v2.0.0 compared to v1.1.1 are1) The order of arguments for Field interpolation has changed. This is now field[time, depth, lat, lon], which is consistent with the dimension order in which data is stored in the field.data numpy array (#503 and #276).2) The dt argument has been dropped from Kernel definitions, so that the only arguments allowed in a Kernel are def kernelfunc(fieldset, particle, time) (#503)3) Interpolation for C-grids is now done in a fluxes framework, instead of a velocity framework (#499 and #494).4) Interpolation for B-grids (#573)5) Support for np.float64 accuracy of particle locations. This can be set using the lonlatdepth_dtype argument in ParticleSet construction. Default is np.float64 for C-grids, and np.float32 for all other grids (#552 and #557)Note also a number of other minor development:See v2.0.0.betaSee v2.0.0.beta2Unpinning netcdf4 1.4.1 (#597)Numerous bug fixes

Software

Ham D, Hargreaves JC, Kerkweg A, Roche DM, Sander Ret al., 2019, Editorial: The publication of geoscientific model developments v1.2, Geoscientific Model Development, Vol: 12, Pages: 2215-2225, ISSN: 1991-959X

. Version 1.1 of the editorial of Geoscientific ModelDevelopment (GMD), published in 2015 (GMD ExecutiveEditors, 2015), introduced clarifications to the policy on publication of source code and input data for papers publishedin the journal. Three years of working with this policy hasrevealed that it is necessary to be more precise in the requirements of the policy and in the narrowness of its exceptions. Furthermore, the previous policy was not specific inthe requirements for suitable archival locations. Best practice in code and data archiving continues to develop andis far from universal among scientists. This has resulted inmany manuscripts requiring improvement in code and dataavailability practice during the peer-review process. New researchers continually start their professional lives, and it remains the case that not all authors fully appreciate why codeand data publication is necessary. This editorial provides anopportunity to explain this in the context of GMD.The changes in the code and data policy are summarisedas follows:– The requirement for authors to publish source code, unless this is impossible for reasons beyond their control,is clarified. The minimum requirements are strengthened such that all model code must be made accessible during the review process to the editor and to potentially anonymous reviewers. Source code that can bemade public must be made public, and embargoes arenot permitted. Identical requirements exist for input dataand model evaluation data sets in the model experimentdescriptions.The scope of the code and data required to be publishedis described. In accordance with Copernicus’ own datapolicy, we now specifically strongly encourage all codeand data used in any analyses be made available. Thiswill have particular relevance for some model evaluation papers where editors may now strongly request thismaterial be made available.– The requirements of suitable archival locations are specified, along with the recomm

Journal article

Ham D, Homolya M, Lange M, Kirby R, Mitchell Let al., 2019, FInAT/FInAT: a smarter library of finite elements

This release is specifically created to document the version of FInAT used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html

Software

Ham D, Sheppard K, Duvenhage B, de Buyl Pet al., 2019, bashtage/randomgen: Release 1.16.2

Updated Xoroshiro120 to use AUthor's latest parameterizationClosely synchronized with the version of randomgen being integrated into NumPy, including removing:random_raw, which have been moved to the individual basic RNGsrandom_uintegers, which can be replaced with randint.Added RandomState as a clone of NumPy's RandomState.Removed LegacyGenerator since this is nolonger neededFixed many small bugs, including in cffi and ctype interfaces

Software

This data is extracted from the Web of Science and reproduced under a licence from Thomson Reuters. You may not copy or re-distribute this data in whole or in part without the written consent of the Science business of Thomson Reuters.

Request URL: http://wlsprd.imperial.ac.uk:80/respub/WEB-INF/jsp/search-html.jsp Request URI: /respub/WEB-INF/jsp/search-html.jsp Query String: respub-action=search.html&id=00464536&limit=30&person=true