- Welcome to Python in High Performance Computing (video)
- Prerequisities and structure of the course
- How well do you know Python? (quiz)
- Setting up the programming environment
- Outline of Python performance issues (video)
- Why are Python programs slow?
- Experiences about performance of Python programs (discussion)
- Where program spends time?
- Using applications own timers
- Measuring small code snippets with timeit
- Using cProfile (video)
- Introducing heat equation
- Hands-on: Performance analysis of heat equation solver
- Pros and cons of various performance analysis approaches (discussion)
- Welcome to week 2 (video)
- Differences between Python lists and NumPy arrays (video)
- Creating and accessing NumPy arrays
- Hands-on: Array creation
- Hands-on: Array slicing
- Arithmetics and elementary functions
- Vectorised operations
- Hands-on: Finite difference
- Hands-on: Numerical integration
- Broadcasting
- Hands-on: Split and combine arrays
- Hands-on: Translation with broadcasting
- Avoiding explicit loops with NumPy arrays (discussion)
- File I/O
- Hands-on: Input and output
- Random numbers
- Hands-on: Random numbers
- Linear algebra and polynomials
- Hands-on: Linear algebra
- Anatomy of NumPy arrays
- Temporary arrays
- Hands-on: Temporary arrays
- Speeding up complex expressions with Numexpr
- Hands-on: Numexpr
- Week 2 summary
- Limitations of NumPy (discussion)
- Welcome to week 3 (video)
- What is Cython?
- Creating Cython modules
- Hands-on: Creating a simple Cython extension
- Using static typing
- Avoiding function call overheads
- Where to add types? (video)
- Using NumPy with Cython
- Hands-on: Cythonizing heat equation solver
- How much speed up is possible with Cython? (discussion)
- Profiling Cython
- Interfacing C code with CFFI
- Hands-on: Utilizing C code
- Interfacing C code with Cython
- Interfacing Fortran code
- Hands-on: Utilizing Fortran code
- Week 3 summary
- Different ways to use compiled code with Python (discussion)
- Introduction to MPI
- Execution and data model in MPI (video)
- Case study: Parallel sum
- Hands-on: Hello world
- MPI communication
- Fast communication of large arrays
- Hands-on: Message exchange
- Hands-on: Message chain
- Non-blocking communication
- Hands-on: Non-blocking communication
- Communicators
- Communication modes (discussion)
- Collective communication: one to many
- Collective communication: many to one
- Collective communication: many to many
- Do you understand collective communication? (quiz)
- Hands-on: Collective operations