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