| 
 Postgraduate Course: Practical Introduction to High Performance Computing (PGPH11091)
Course Outline
| School | School of Physics and Astronomy | College | College of Science and Engineering |  
| Credit level (Normal year taken) | SCQF Level 11 (Postgraduate) |  
| Course type | Online Distance Learning | Availability | Not available to visiting students |  
| SCQF Credits | 20 | ECTS Credits | 10 |  
 
| Summary | This course will cover: *Basic components of HPC systems: processors, memory, interconnect, storage.
 *Classification of architectures: SIMD/MIMD, shared vs distributed memory, clusters.
 *System software: OSs, processes, threads, scheduling, batch systems.
 *Brief history of HPC systems, including Moore¿s Law.
 *Linux/Unix tools useful to programmers - editors, file and process managers.
 *How programs run - fundamentals of operating systems and compilers.
 *Testing programs automatically.
 *Measuring speed and resource usage - profiling and performance.
 *Running scientific codes as experiments.
 *Basic concepts of shared memory: threads, tasks, shared/private data, synchronisation.
 *Concepts of OpenMP: parallel regions, shared/private variables, parallel loops, reductions.
 *The message-passing model and concepts of the MPI library.
 *Anatomy of send and receive (synchronous and asynchronous); bandwidth and latency.
 *Trends and demographics in HPC and HPC vendors; challenges in HPC Today and the Exascale.
 *Cloud and distributed computing.
 *HPC Case Studies.
 
 |  
| Course description | Not entered |  
Entry Requirements (not applicable to Visiting Students)
| Pre-requisites |  | Co-requisites |  |  
| Prohibited Combinations |  | Other requirements | None |  
Course Delivery Information
| Not being delivered |  
Learning Outcomes 
| On completion of this course you should be able to: *Understand the key components of HPC architectures
 *Understand how the components are put together to form complete systems
 *Understand how HPC system software is used to manage the hardware.
 *Be able to build code in a Linux/Unix environment and understand the stages involved.
 *Describe the features and relative strengths and weaknesses of C, C++, Python and Fortran 90.
 *Use the make tool to build multi-file programs.
 *Use svn and git to manage source code within a single repository.
 *Understand the importance of testing, how to write automated tests for scientific and technical applications.
 *Understand the importance of performance and Amdahl¿s law.
 *Understand the message-passing model in detail.
 *Explain the circumstances which cause issues such as deadlock.
 *Measure and comment on the performance of MPI codes.
 *Understand the key concepts of multithreaded programming.
 *Describe four key parallelisation strategies used in modern HPC codes.
 *List several current HPC vendors and their products and services
 *Explain the key issues for HPC in the future
 
 |  
Additional Information
| Graduate Attributes and Skills | Not entered |  
| Keywords | Not entered |  
Contacts 
| Course organiser |  | Course secretary |  |  |  |