Course syllabus
Intended Learning Outcomes
At the end of the course, you will be able to:
- Describe and list the different computer components that are vital to achieving high performance for serial applications
- Use efficiently several software engineering tools, modules, and libraries for the development and optimization of scientific applications
- Develop and optimize a scientific application from scratch following the best practices and more convenient HPC tools
Prerequisites
- Basic knowledge of Python
- Basic knowledge of C or Fortran (we will couple Python to C and Fortran)
- Knowledge of Linux command line
What is HPC?
- How can we design a code that is as fast as we can?
- Know the hardware and map the algorithm to the hardware
- We need to know the hardware
- We need to know the parameters that characterize the performance
- We need to be able to measure how efficiently the hardware is used!
- It is important to know how to cross-compile codes with different languages (Python + X)
- Do not re-invent the wheel: there has been a major investment by the HPC community in developing high-performance code building blocks as libraries
- It is very hard to beat the performance of these libraries. If you can make is surely a nice research paper!
- What does ”as much as we can” mean?
- The performance model of an application is an important topic in DD2356