Skip to content

Latest commit

 

History

History
143 lines (103 loc) · 6.16 KB

index.md

File metadata and controls

143 lines (103 loc) · 6.16 KB

Introduction and performance analysis

Welcome to the course

  1. Welcome to Python in High Performance Computing (video)
  2. Prerequisities and structure of the course
  3. How well do you know Python? (quiz)
  4. Setting up the programming environment

Performance challenges in Python

  1. Outline of Python performance issues (video)
  2. Why are Python programs slow?
  3. Experiences about performance of Python programs (discussion)

Performance analysis

  1. Where program spends time?
  2. Using applications own timers
  3. Measuring small code snippets with timeit
  4. Using cProfile (video)
  5. Introducing heat equation
  6. Hands-on: Performance analysis of heat equation solver
  7. Pros and cons of various performance analysis approaches (discussion)

Revision

  1. Week 1 summary

Numerical computing

Using NumPy

  1. Welcome to week 2 (video)
  2. Differences between Python lists and NumPy arrays (video)
  3. Creating and accessing NumPy arrays
  4. Hands-on: Array creation
  5. Hands-on: Array slicing

Operating with NumPy arrays

  1. Arithmetics and elementary functions
  2. Vectorised operations
  3. Hands-on: Finite difference
  4. Hands-on: Numerical integration
  5. Broadcasting
  6. Hands-on: Split and combine arrays
  7. Hands-on: Translation with broadcasting
  8. Avoiding explicit loops with NumPy arrays (discussion)

NumPy tools

  1. File I/O
  2. Hands-on: Input and output
  3. Random numbers
  4. Hands-on: Random numbers
  5. Linear algebra and polynomials
  6. Hands-on: Linear algebra

Deeper view into NumPy

  1. Anatomy of NumPy arrays
  2. Temporary arrays
  3. Hands-on: Temporary arrays
  4. Speeding up complex expressions with Numexpr
  5. Hands-on: Numexpr

Revision

  1. Week 2 summary
  2. Limitations of NumPy (discussion)

Using compiled code and libraries

Using Cython

  1. Welcome to week 3 (video)
  2. What is Cython?
  3. Creating Cython modules
  4. Hands-on: Creating a simple Cython extension
  5. Using static typing
  6. Avoiding function call overheads
  7. Where to add types? (video)
  8. Using NumPy with Cython
  9. Hands-on: Cythonizing heat equation solver
  10. How much speed up is possible with Cython? (discussion)
  11. Profiling Cython

Interfacing with external libraries

  1. Interfacing C code with CFFI
  2. Hands-on: Utilizing C code
  3. Interfacing C code with Cython
  4. Interfacing Fortran code
  5. Hands-on: Utilizing Fortran code

Revision

  1. Week 3 summary
  2. Different ways to use compiled code with Python (discussion)

Parallel programming

Introduction to parallel programming

  1. Welcome to week 4 (video)
  2. Parallel programming concepts
  3. Processes and threads (video)

Message passing with Python

  1. Introduction to MPI
  2. Execution and data model in MPI (video)
  3. Case study: Parallel sum
  4. Hands-on: Hello world

Point-to-point communication

  1. MPI communication
  2. Fast communication of large arrays
  3. Hands-on: Message exchange
  4. Hands-on: Message chain
  5. Non-blocking communication
  6. Hands-on: Non-blocking communication
  7. Communicators
  8. Communication modes (discussion)

Collective communication

  1. Collective communication: one to many
  2. Collective communication: many to one
  3. Collective communication: many to many
  4. Do you understand collective communication? (quiz)
  5. Hands-on: Collective operations

Revision

  1. Week 4 summary
  2. Bonus hands-on: Parallel heat equation solver
  3. Course summary (video)