@phdthesis{16115, author = {James Trotter}, title = {High-performance finite element computations: Performance modelling, optimisation, GPU acceleration \& automated code generation}, abstract = {Computer experiments have become a valuable tool for investigating various physical and biological processes described by partial differential equations (PDEs), such as weather forecasting or modelling the mechanical behaviour of cardiac tissue. Finite element methods are a class of numerical methods for solving PDEs that are often preferred, but these methods are rather difficult to implement correctly, let alone efficiently.This thesis investigates the performance of several key computational kernels involved in finite element methods. First, a performance model is developed to better understand sparse matrix-vector multiplication, which is central to solving linear systems of equations that arise during finite element calculations. Second, the process of assembling linear systems is considered through careful benchmarking and analysis of the memory traffic involved. This results in clear guidelines for finite element assembly on shared-memory multicore CPUs.Finally, hardware accelerators are incorporated by extending the FEniCS PDE solver framework to carry out assembly and solution of linear systems on a graphics processing unit (GPU). Example problems show that GPU-accelerated finite element solvers can exhibit substantial speedup over optimised multicore CPU codes. Moreover, the use of automated code generation makes these techniques much more accessible to domain scientists and non-experts.}, year = {2021}, journal = {University of Oslo}, volume = {PhD}, pages = {132}, month = {09/2020}, publisher = {University of Oslo}, address = {Oslo, Norway}, }