Navigation and service

Training course "Improving Software Performance - Parallel Programming" @ HLRS

18.Sep.2018 09:00
HLRS Stuttgart

Parallel programming is considered a key to improving software performance. For code development on parallel systems, application programmers need not only a thorough understanding of parallel computing system architectures and programming models like MPI or OpenMP, but also the ability to implement directives, libraries, and important parallelization concepts efficiently.

The module "Parallel Programming" will provide such knowledge and skills. In addition to covering the theoretical foundations of parallelization, the course will include concrete programming exercies that offer the opportunity to gain a deeper understanding and practical expertise. The module is ideal for programmers and developers with experience in C, C++, or Fortran.

Module Contents

  • What is HPC?
  • Performance
  • Vectorization
  • Parallelization: thinking in parallel
  • Parallelizability of software, calculations, and requirements
  • OpenMP
  • Parallel programming models: introduction to MPI (C++, Fortran)
  • Parallel programming models: advanced MPI (C++, Fortran)
  • Parallel programming models: parallel I/O
  • Parallel programming models: hybrid programming - MPI + X
  • Other parallel programming models
  • Parallelization: scaling
  • Parallelization: domain decomposition and load balancing
  • Parallelization: parallel design patterns
  • Parallelization: parallel aspects of programming languages
  • Heterogeneous computing systems and graphic cards
  • Parallel numerical libraries
  • Parallelization strategies: deciding on a programming model

Flexible Learning

The module is conducted in a blended learning format, meaning that it combines self-learning phases and classroom instruction. This approach offers flexiblility in the time required to work through the course content, so that continuing education can take place in parallel with job and family responsibilities.

Self-directed learning is complemented with regular online meetings in a virtual classroom, which take place on Monday evenings.

Time Commitment

Each module requires a time commitment of approximately 125 hours over the span of 12-14 weeks. Course time is divided as follows:

  • 8 hours per week per module, including a weekly online meeting (Monday evenings)
  • 2 classes at HLRS in Stuttgart