Technical Documents
- IoT Security Compliance Framework, published by the IoT Security Foundation. This framework is a comprehensive checklist to guide an organisation through the IoT security assurance process, gathering evidence in a structured manner to demonstrate conformance with best practice. I am a member of the Working Group that produces the framework, and contributed particularly to the updated framework Releases 1.1 and 2.0. These updates changed to a risk-based approach that gives the flexibility to apply the framework in a range of markets, from consumer products to the enterprise.
Journal papers / conference proceedings
-
F. Rathgeber, D.A. Ham, L. Mitchell, M. Lange, F.Luporini, A.T.T. McRae, G-.T. Bercea, G.R. Markall, P.H.J. Kelly. Firedrake: Automating the Finite Element Method by Composing Abstractions. In ACM Transactions on Mathematical Software (TOMS) 43(3), January 2017.
-
G.R. Markall, F. Rathgeber, L. Mitchell, N. Loriant, C. Bertolli, D.A. Ham and P.H.J. Kelly. Performance-Portable Finite Element Assembly Using PyOP2 and FEniCS. Proceedings of the 28th International Supercomputing Conference (ISC 2013), June 2013, Leipzig, Germany
-
M. B. Giles, P. H. J. Kelly, G. R. Markall, G. R. Mudalige and Z. Sharif. Performance Analysis of the OP2 Multi-Layer Abstraction Framework on Many-Core Architectures. 1st International Workshop on Performance Modeling, Benchmarking and Simulation of High Performance Computing Systems (PMBS ’10), held as part of SC’10. November 2010, New Orleans, LA, USA.
-
G. R. Markall, A. Slemmer, D. A .Ham, P. H. J. Kelly, C. D. Cantwell, and S. J. Sherwin. Finite element assembly strategies on multi- and many-core architectures. In International Journal for Numerical Methods in Fluids, 71(1):80-97, 2013.
-
G. R. Markall, D.A. Ham and P. H. J. Kelly. Towards generating optimised finite element solvers for GPUs from high-level specifications, in Proceedings of the 10th International Conference on Computational Science (ICCS 2010). Amsterdam, Netherlands. June 2010.
Theses
- Multilayered Abstractions for Partial Differential Equations. PhD Thesis, Imperial College, June 2013.
- Making Faster FEM Solvers, Faster. MPhil transfer report, Imperial College, July 2010.
- Generatively Programming Galerkin Projections on General Purpose Graphics Processing Units. MSc Project report, Imperial College, July 2009. Fluidity (developed by the Applied Modelling & Computation Group in the Department of Earth Science & Engineering) is a general purpose computational fluid dynamics code that uses the finite element method to solve the Navier-Stokes equations on adapting unstructured meshes. My MSc project was a pilot study into accelerating the assembly of large, sparse systems of equations using multicore architectures. CUDA versions of the assembly phase of two test problems were produced, resulting in almost an order of magnitude speedup over a multicore CPU. Since rewriting code for each multicore architecture is a labour intensive process, a compiler is produced that generates CUDA code from a high-level specification of the method written in the Unified Form Language. Targeting a new architecture only requires writing a new backend for the UFL compiler, and recompiling existing code.
- Epistemic Verification of Quantum Protocols. ISO Report, Imperial College, April 2009. I surveyed and evaluated some approaches to using epistemic logic to verify the behaviour of multi-agent systems where agents perform quantum computations.
- Accelerating Unstructured Mesh Computational Fluid Dynamics on the NVidia Tesla GPU Architecture. ISO Report, Imperial College, January 2009. I worked on a sparse conjugate-gradient solver for NVidia GPUs. This solver was compared against the PETSc solver in a finite element test problem which solves a Laplacian equation. The NVidia 280GTX GPU showed a speedup of up to 10 times over one core of an Intel Core 2 Duo 3GHz when solving systems generated by the test problem.
- An Investigation Into Value Profiling and its Applications. Undergraduate Project Report, Manchester Metropolitan University, May 2008. I collected value profile data for the execution of a subset of the MiBench suite of benchmarks executing inside the LLVM interpreter and on the x86 architecture. The inputs and outputs of instructions and the values transferred across the data bus were recorded. These profiles were used to guide the design of a cache that stores the outputs of computations, and an encoding scheme to reduce switching activity on the data bus.