Course: Distributed Computing

Project Details

Project Lead
David Fergusson 
Project Manager
David Fergusson 
Project Members
Mohsin Ali Mohammed, Kevin McManus, Sundara Pandiyan, manjunatha periyaswamy, Darren Wise, Bathri Ajay Raj Shanmuga Sundara Raju, Jabir Hasmani, umarfarook jafferali, Segun Orimoloye, manjunatha periyaswamy  
BioIT, BioIT  
Computer Science (401) 


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 Impacts

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.

Scale of Use

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