Postgraduate Course: Practical Introduction to High Performance Computing (PGPH11093)
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 | As HPC and parallel programming become more widespread they are being used by an ever increasing number of academic and industrial disciplines. Previously, use of HPC was dominated by people with high levels of technical programming experience and backgrounds in physics, engineering, mathematics or computer science. As a result, HPC training tended to be quite technical in nature and assumed that all users would be competent programmers developing their own software. This course develops knowledge and skills in the following:
1. software may need to be downloaded from a central repository and compiled from source;
2. changing the functionality of the package may require small sections of source code to be modified;
3. selecting the best package to use may require knowledge of how each package¿s parallelisation strategy interacts with the target HPC architecture;
4. checking that the package is performing acceptably requires a basic knowledge of HPC architec- tures and parallelisation techniques;
5. interacting with HPC systems is more complicated than with a desktop system, e.g. users log in to shared login nodes and have to submit parallel jobs to a batch queuing system.
|
Course description |
- 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.
|
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 | |
|
|