• F. Luporini, D.A. Ham, P.H.J. Kelly. An algorithm for the optimization of finite element integration loops. ACM Transactions on Mathematical Software (TOMS), 2017.
  • G.-T. Bercea, A.T.T. McRae, D.A. Ham, L. Mitchell, F. Rathgeber, L. Nardi, F. Luporini, P.H.J. Kelly. A numbering algorithm for finite element on extruded meshes which avoids the unstructured mesh penalty. Geoscientific Model Development (GMD), 2016.
  • F. Rathgeber, D.A. Ham, L. Mitchell, M. Lange, F. Luporini, A.T.T. McRae, G.-T. Bercea, G.R. Markall, and P.H.J. Kelly. Firedrake: automating the finite element method by composing abstractions. ACM Transactions on Mathematical Software, 2016.
  • F. Luporini, A.L. Varbanescu, F. Rathgeber, G.-T. Bercea, J. Ramanujam, D.A. Ham, and P.H.J. Kelly. Cross-Loop Optimization of Arithmetic Intensity for Finite Element Local Assembly. ACM Transactions on Architecture and Code Optimization (TACO), 2015; also appeared in HiPEAC 2015.
  • M.M. Strout, F. Luporini, C.D. Krieger, C. Bertolli, G.-T. Bercea, C. Olschanowsky, J. Ramanujam, and P.H.J. Kelly. Generalizing Run-time Tiling with the Loop Chain Abstraction. International Parallel and Distributed Processing Symposium (IPDPS), 2014.
Full list available at my Google scholar page


Available here.



  • I'm the author of COFFEE, a compiler for optimising compute-intensive expressions embedded in (possibly non-perfect) loop nests. The compiler is fully integrated with Firedrake, an automated system for the solution of partial differential equations using the finite element method.
  • I also have developed SLOPE, a run-time system for fusing and tiling loops with indirect memory accesses (e.g., A[B[i]]). The library ships a Python interface that can be used for integration with scientific codes based on Python and run-time code generation. I integrated SLOPE with Firedrake.
  • I'm one of the contributors of PyOP2, a key component of Firedrake.
  • More recently I started contributing to the OPESCI project and its main software component, DEVITO, to perform optimized finite difference computation from high-level symbolic problem definitions, through automated code generation.
Essentially, all I've developed during my PhD had something to do with Firedrake. Now I'm more focussed on OPESCI and Devito, though still contributing to Firedrake. We hope to use Firedrake in OPESCI. Reusing science is good.