Final Year Projects 2015

Here is a running list of projects available. Several new projects may arise depending on funding requests for some new equipment. Otherwise, I'll add projects as and when I think of them...

FPGAs vs GPUs using custom floating-point arithmetic

As a general rule, using less precision means an algorithm can run faster or use less power at the cost of introducing more error. It follows that in the ideal case, you should use the minimum precision that is tolerable for an algorithm. Current research is developing techniques to help automate this process. This project seeks to motivate this research by illustrating the potential performance gains of using custom precision arithmetic.

A previous final year project explored the performance trade-offs on FPGAs and GPUs when performing matrix-matrix multiplication in non-standard precision. This algorithm is heavily suited to a GPU, but the work demonstrated that depending on the required precision, an FPGA may be a preferable implementation.

This project will seek to re-explore this trade-offs on algorithms less well suited to a GPU to provide a more comprehensive picture of the potential benefits.

Number of students: 1 or more

If taken by only one student, this will project will involve implementing an algorithm on an FPGA and GPU and comparing performance in multiple precision

If taken by multiple students, this would involve a GPU team and an FPGA team. The idea would be to compete to create the best performance for a range of algorithms. Due to the greater difficulty of FPGA designs, the GPU team would be smaller.

Overclocking without fear

When creating an FPGA or ASIC design, the operating clock frequency is chosen according to the worst-case path through the circuit. This prevents timing violations occuring. But what if the worst-case path only occurs rarely, is this such a problem? For high-speed or low power problems, recent research has demonstrated that simply allowing these errors to occur may be preferable to altering a design to satisfy timing constraints. However, this depends upon how much error the algorithm can tolerate

PID controllers are the most widely used throughout industry. Given that these devices are designed to correct for errors, if the computations are correct most of the time, will these controllers be good enough?

This project will involve creating some overclocking friendly PID controllers on FPGAs and observing their response.

Number of students: 1-2

Will a hardware accelerator actually improve my code?

Boosting the performance of your software using FPGAs and GPUs is appealing, but the effort can be very large. Whether it is worthwhile depends very much on the application. This will depend on lots of factors – is there room for parallelism, are there loops, what are the input ranges, error tolerances. When given all this information, an experienced engineer is capable of estimating the potential performance improvement with a dedicated hardware accelerator. Hiring such an engineer as a consultant to provide this information would be expensive and as a result, there could be countless software algorithms which run much slower than they have to.

The goal of this project is to design a software compiler that looks for key attributes from code and estimates the performance improvement using various hardware accelerators. This software could then provide insight as to whether it is worthwhile to invest in a hardware design engineer to improve their code.

Number of students: 1-2

Creating a 'cool' FPGA demo project

At my previous university, a small group of first-year undergrads implemented the original Mario (platform game) using an FPGA. I have no idea how, but it drew lots of attention.

I'm looking for someone to create a set of games that run solely using an FPGA (and a display monitor) for demos (open days etc.). I'll try to incorporate them into future teaching material in labs.

Number of students: 1 or more. Group projects welcome

FPGA/GPU acceleration of anything that interests you

Want to try to make something run faster? Pick your algorithm (perhaps something from image processing (e.g. feature detection, object tracking), machine learning or key basic computational kernels?) and spend a year trying to make it as fast as possible. If no-one comes to me with any ideas, I'll slowly add some over time.

Number of students: 1 or more. Group projects welcome

Your own project

I am happy to supervise a wide range of projects including design-and-build, research-based projects in my areas of interest (see homepage) or random collaborations with other departments (e.g. last year I co-supervised a FYP with a lecturer from the physics department). If you have your own idea for a project then feel free to come and chat

Number of students: 1 or more. Group projects welcome