Student Projects 2007

Below is a list of possible student projects for 2007. The list is incomplete and I will add new projects as I have time. Feel free to come and talk to me about any of these projects or ideas you may have at any time.

I have labelled the projects as either software development or research based. In most cases the size of the projects can be adapted to fit either 6, 12, 18 or 24 credit points. Some of the projects will involve co-supervision with other researchers.


A Cache Coherence Visualization Tool for Teaching

Project type: Software Development (COMP3750, eScience or Software Engineering)

In recent years multiprocessor and/or multicore systems have become increasingly popular. All these systems have a number of different caches. Cache coherency is the policy that is used to ensure that there is a well defined top copy of any data item that is stored in one or more of the caches. A number of different cache coherency protocols exist including, for example, the MSI, MESI and MOSI protocols. The objective of this project is to develop a graphical visualization tool that can be used to illustrates the operation of cache coherency protocols on multiple caches machines and the subtitle differences between the different schemes.

In this project you will gain a good understanding of modern computer architectures and cache coherency. You will need to consider how to create input for your system (instruction streams). You will gain skills in the development of a graphical user environment.

This is potentially a big project, but there is considerable flexibility to scope out something that is achievable given the credit point weighting you have assigned to your project work.


Mixed Precision Computations in Scientific Applications

Project type: Research (COMP3750, Honours, Masters, Software Engineering)

The vast majority of scientific applications deal with floating point arithmetic, and in most cases this means using IEEE 64-bit arithmetic. The aim of this project is explore the possibility of performing mixed precision scientific computations. Specifically how we might combine the use of both 32-bit and 64-bit precision. A motivation for this work is the fact that modern graphics cards are programmable and capable of performing 32-bit floating point arithmetic at very high speeds - often greater than what is possible on the main processor. So the question becomes, is it possible to hand the graphics processor all work that can be performed in 32-bit while leaving the main processor to execute work that requires 64-bit precision. Alternatively, in some cases you might envisage doing all computations in 32-bit precision and then repeating computations that are subsequently deemed to be too inaccurate.

In this project you will gain a good understanding of numerical computing and some detailed knowledge about a specific application area. In the first instance it is not envisaged that you will write code for the graphics card but this is not excluded.

This is an open ended project, for which the scope can be adjusted depending on the credit point weighting. There is some existing work in this area, but mainly for isolated numerical kernels.


Numerical Simulation on Graphics Processing Units (GPU)

Project type: Research (COMP3750, Honours, Masters, Software Engineering)

Over the past 10 years graphics processing units (GPU) have become ubiquitous in desktop computers. Modern GPUs now allow substantial user programmability that lets them be used for more general-purpose computation.

Tracking this development there has been a number of groups developing programming environments that can exploit the GPU for general computations including Brook and Sh. The former is built on top of C while the latter is built on top of C++. Alternatively it is possible to program the GPU more directly using OpenGL.

The goal of this project will be develop a number of molecular science kernels to run on the GPU. Careful consideration will be given to both the accuracy and speed of the GPU.


Intelligent Scientific Software

Project type: Research or Software Development (several project options)

Modern science increasingly turns to computation to simulate complicated physical phenomena. Ensuring that the software used runs well on a wide spectrum of computer hardware available is proving ever more costly. The goal of this project is to develop intelligent scientific software, software that can dynamically adapt to changes in the runtime conditions. These changes may result from external factors, such as the impact of other users when running on a shared resource, or may occur as a result of the computation, for example in a dynamical simulation the positions of the particles may affect the algorithm that is used and the positions are changing during the course of the simulation.

There are three components to our work in this area. i) the application ii) monitoring and modifying the application in response to the environment, iii) making decisions based on the current state of the system. There is scope for various projects in all three areas. Currently we have been looking at either using DynInst or LLVM to control the behaviour of a running code. DynInst dynamically modifies a running binary, while LLVM stands for low level virtual machine and is a similar concept to a Java virtual machine (but not limited to Java code). For decision making we have been exploring simple reinforcement learning techniques.


Contact Details: Alistair Rendell
Department of Computer Science
ANU College of Engineering and Computer Science
Australian National University
Canberra, ACT 0200
AUSTRALIA
T: +61-2-6125 4386
F: +61-2-6125 0010
E: Alistair.Rendell@anu.edu.au
Rm 233 Building 108