Parallel Programming of High Performance Systems

Date: Monday, March 10 - Friday, March 14, 2014, 9:00-18:00

RRZE building, University campus Erlangen, Martensstr. 1: Via video conference at LRZ if there is sufficient interest.

Contents: This course, a collaboration of Erlangen Regional Computing Centre (RRZE) and LRZ, is targeted at students and scientists with interest in programming modern HPC hardware, specifically the large scale parallel computing systems available in Jülich, Stuttgart and Munich.

Each day is comprised of approximately 4 hours of lectures and 3 hours of hands-on sessions.

Day 1

  • Introduction to High Performance Computing (Weinberg)
  • Secure shell (Weinberg)
  • Source code versioning with SVN (Guillen)
  • Handling console and GUI based interfaces (Weinberg)
  • Building programs with GNU MAKE (Guillen)

Day 2

  • Basic parallel programming models: elements of MPI and OpenMP (Weinberg)
  • Processor architectures (Hager)

Day 3

  • Principles of code optimization: unrolling, blocking, dependencies, C++ issues, bandwidth issues, performance projections (Hager)
  • Basics of software engineering (Guillen)
  • Advanced MPI programming (Wittmann)

Day 4

  • Advanced OpenMP programming (Weinberg)
  • Performance Libraries (Weinberg)
  • Parallel architectures: multi-core, multi-socket, ccNUMA, cache coherence and affinity, tools for handling memory affinity (Hager)
  • Parallel algorithms: data parallelism, domain decomposition, task parallelism, master-worker, granularity, load balancing, scalability models (Hager)

Day 5

  • Processor-specific optimization strategies: compiler switches, avoiding cache thrashing, exploiting SIMD capabilities (Treibig)
Prerequisites Good working knowledge of at least one of the standard HPC languages: Fortran 95, C or C++.
Language: English
Teachers: G. Hager, J. Treibig, M. Wittmann (RRZE), C. Guillen, V. Weinberg (LRZ)
Registration: Will soon be available via the LRZ registration form (Please choose course HPAR1W13)