Course: Distributed Computing


Research into high performance computing has been driven by the need to solve large-scale, increasingly complex problems for scientific applications. This technology has matured into the use of grids to manage loosely coupled, heterogeneous resources and provide virtual supercomputer facilities capable of supporting large scale applications. The applications of grid computing for business and casual users did not begin to emerge until advances in virtualisation and high speed networks led to the development of cloud computing. High performance computing is no longer perceived to be a discipline for academics, researchers and niche hardware manufacturers. With the introduction of affordable multi-core processors, high performance computing has become a mainstream activity. This technology now underpins applications in a variety of sectors, including traditional numerical modelling fields such as such as meteorology, aerospace and automotive engineering and emerging fields such as search engines, financial modelling, post-production effects and so on.

Intellectual Merit

Learning Outcomes:
On completing this course successfully you will be able to:

Characterise and critically evaluate high performance computing based architectures and their suitability for given applications.
Implement and execute applications using shared and distributed memory programming paradigms.
Describe and critically discuss the roles and applications of cloud and grid computing.

Broader Impact

Indicative Content:
Compilers and compilation optimisation transformations.
Data dependence analysis and automation of code parallelisation.
High performance computer systems architectures, shared memory, distributed memory, multi-core, clusters, Flynn┬┐s taxonomy, interconnection technologies and topologies.
Performance metrics, Amdahl's law, performance analysis and prediction.
Numerical methods, direct and iterative solvers, Jacobi, Gauss-Seidel, conjugate gradient.
Shared memory programming using OpenMP.
Parallel algorithms, parallelisation of sequential algorithms, domain decomposition methods.

Distributed memory programming, message passing, MPI.
Load sharing, load balancing, load migration.
Platform and resource virtualisation and paravirtualisation, energy costs.
Grid computing and grid services.
Cloud computing, cloud storage, computing as a service, thin clients.

Use of FutureGrid

I hope to use FutureGrid to provide students with an introduction to Cloud and Grid computing.

Scale Of Use

Running a 2 hour practical class with some follow on use by students.


David Fergusson

Project Members

Bathri Ajay Raj Shanmuga Sundara Raju
Darren Wise
Jabir Hasmani
Kevin McManus
manjunatha periyaswamy
Mohsin Ali Mohammed
Segun Orimoloye
Sundara Pandiyan
umarfarook jafferali


1 year 13 weeks ago