The goal of the school is to teach scientists modern computer hardware and programming to provide a foundation for future computational research using High Performance Computing (HPC). Participants will go through an intensive programme with focus on practical skills. Participants will learn how to improve the efficiency of their research codes, and to parallelize them. Lectures on a selection of technical aspects of modern HPC hardware will be mixed with introductions to widely used parallel programming tools and libraries. The hands-on sessions will allow participants to learn from examples of problems of general scientific interest. Topics will cover numerical methods and parallel strategies, as well as data management.
The programme specifically addresses the needs of scientists using, writing, or modifying HPC applications, and will not assume, require, or provide significant IT and HPC resource management skills. It will be mainly based on fundamental HPC-relevant features in widely used scientific software for high-performance computing.
- Computer architectures for HPC and optimization
- Parallel programming tools (MPI & OpenMP)
- Parallel programming best practices
- Floating-point math
- Profiling and Debugging
- Principles and Practices of Parallel SW Development
- Raphael Cobe (NCC-UNESP/AI2, Brazil)
- Ivan Girotto (ICTP-Trieste, Italy)
- Sergio F. Novaes (UNESP/AI2, Brazil)
- Silvio Luiz Stanzani (NCC-UNESP/AI2, Brazil)
- Ivan Girotto (ICTP-Trieste, Italy)
- Axel Kohlmeyer (Temple University, Philadelphia, US)
- Gavin Pringle (EPCC, Edinburgh, UK)
- Silvio Luiz Stanzani (NCC-UNESP/AI2, Brazil)
Introduction to High-Performance Computing [Slides]
Foundation of Modern Computer Architecture [Slides] [Hands on]
Hands-on Session [Code]
From Source Code to Executable [Slides] [Code]
Code Optimization I [Slides]
Interfacing Multiple Programming Languages [Slides] [Code]
Floating Point Math and Errors [Slides] [Code]
Basic Principles of Parallelism [Slides]
Introduction to OpenMP [Slides] [Code]
Message Passing Programming with MPI [Slides]
Overview of Common Strategies for Parallelization [Slides] [Lab]
Code Optimization II [Slides] [Code]
Lattice-Boltzmann Code Best Practices [Slides]
Overview of Parallel Math Libraries [Slides]
Introduction to Parallel I/O [Slides]
Collaborative Software Management: The LAMMPS Project [Slides]
Task Farming for Embarrassingly Parallel Processing [Slides] [Code]
Overview of GPU Computing [Slides]
Containers in HPC [Slides]