Graham Markall

Graham Markall

Current site: - this site is rather outdated!

PhD student in the Department of Computing, Imperial College London.
Member of the Software Performance Optimisation Group.
Supervisors: Paul Kelly and David Ham.



Making Faster FEM Solvers, Faster
My MPhil transfer report, submitted in July 2010.
MSc Project
Supervisor: Paul Kelly. 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.
1st ISO
Supervisor: Paul Kelly. 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.
Undergraduate Project
Supervisor: Andy Nisbet. 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.

ClearSpeed CSX600 Driver for Linux Kernel >=2.6.24

Changes in the API for the management of scatterlists in kernel 2.6.24 (see this page for details) prevent the ClearSpeed drivers from compiling with these kernel versions. I have modified the driver to reflect these changes, and have made it available here.

Previous Study:

Other Interests:

Valid XHTML 1.0 Strict Valid CSS!