Dr. Francis Russell
Department of Computing, Imperial College London

# About

I'm a Research Associate under the supervision of Paul Kelly in the Software Performance Optimisation research group.

My current research involves the investigation of the applicability of Domain Specific Languages to the quantum chemistry package ONETEP. Further details can be found in slides I've presented on this work here.

My previous research has looked at the use of active libraries in the context of optimising the finite element method. The outcome of this work was a library, Excafé, that generated optimised C code for performing finite element local assembly. This work was presented at the FEniCS'11 workshop.

# Teaching

I lectured the first-year undergraduate C course in 2012 and 2013.
I have previously co-lectured the first-year optional Advanced Java Programming course with Dr. Tristan Allwood.

# Reports

An Active-Library Based Investigation into the Performance Optimisation of Linear Algebra and the Finite Element Method

In this thesis, I explore an approach called "active libraries". These are libraries that take part in their own optimisation, enabling both high-performance code and the presentation of intuitive abstractions.

I investigate the use of active libraries in two domains. Firstly, dense and sparse linear algebra, particularly, the solution of linear systems of equations. Secondly, the specification and solution of finite element problems.

Extending my earlier (MEng) thesis work, I describe the modifications to my linear algebra library "DESOLA" required to perform sparse-matrix code generation. I show that optimisations easily applied in the dense case using code-transformation must be applied at a higher level of abstraction in the sparse case. I present performance results for sparse linear system solvers generated using DESOLA and compare against an implementation using the Intel Math Kernel Library. I also present improved dense linear-algebra performance results.

Next, I explore the active-library approach by developing a finite element library that captures runtime representations of basis functions, variational forms and sequences of operations between discretised operators and fields. Using captured representations of variational forms and basis functions, I demonstrate optimisations to cell-local integral assembly that this approach enables, and compare against the state of the art.

As part of my work on optimising local assembly, I extend the work of Hosangadi et al. on common sub-expression elimination and factorisation of polynomials. I improve the weight function presented by Hosangadi et al., increasing the number of factorisations found. I present an implementation of an optimised branch-and-bound algorithm inspired by reformulating the original matrix-covering problem as a maximal graph biclique search problem. I evaluate the algorithm's effectiveness on the expressions generated by our finite element solver.

Delayed Evaluation and Runtime Code Generation as a means to Producing High Performance Numerical Software
This is the project report for my 4th year MEng individual project. It describes a C++ numerical library that delays evaluation of the calls made to it. When the results of the computation are required, optimised code is generated at runtime to perform the delayed operations.
Operating System Update
This is the project report from my 3rd year group project. The project was an experiment with a filesystem where files are identified by metadata rather than filenames. This makes the filesystem usage similar to that of a database.
Views can be defined on the filesystem filtering on selection criteria. These views are notified when changes, addition or removal of files alter the results. Many tasks become easier under such a system. Music players no longer need to search and index media folders. They can just create a view containing all music files, retrieve any metadata through the view and be notified of all changes.

# Presentations

Exploring Performance Optimisation Opportunities in ONETEP
These are the slides I presented at the June 2013 PSL (Particle Science Language) project meeting. They discuss my work on improving the performance of the Fourier interpolation of 3D datasets. This is a performance-critical kernel in the linear-scaling quantum chemistry application ONETEP.
Exploring Symbolic Manipulation and other Code Generation Techniques for Finite Element Local Assembly
These are the slides I presented at the FEniCS'11 workshop on using symbolic algebra to reduce the operation count of local assembly in the finite element method. More information on the library developed to explore these techniques, Excafé, can be found here.
Delayed Evaluation and Runtime Code Generation as a means to Producing High Performance Numerical Software
These are a slightly updated version of the slides that were presented at my 4th year MEng individual project presentation.

# Publications

Optimized Code Generation for Finite Element Local Assembly Using Symbolic Manipulation (to appear)
Francis P. Russell and Paul H. J. Kelly. ACM Transactions on Mathematical Software. Volume 39, Issue 4. Accepted for publication 28 February 2013.
DESOLA: An Active Linear Algebra Library Using Delayed Evaluation and Runtime Code Generation
Francis P. Russell, Michael R. Mellor, Paul H. J. Kelly and Olav Beckmann. Science of Computer Programming, Volume 76, Issue 4, April 2011, pp. 227-242.
An Active Linear Algebra Library Using Delayed Evaluation and Runtime Code Generation
Francis P. Russell, Michael R. Mellor, Paul H. J. Kelly and Olav Beckmann. In Proceedings of the Second International Workshop on Library-Centric Software Design (LCSD'06), pp. 5-13.